Can*_*iko 5 python python-multiprocessing
我有一个由经理列表组成的数组,例如:
[<ListProxy object, typeid 'list' at 0x177d350>, <ListProxy object, typeid 'list' at 0x177d390>, ...]
Run Code Online (Sandbox Code Playgroud)
并尝试将其转换为纯列表。我的考虑是这样的:
y=[]
for i in my_manager_list_content:
for j in i:
y.append(float(j))
print y #This works
print [next(iter(i[:])) for i in my_manager_list_content] #Why doesn't this work?
Run Code Online (Sandbox Code Playgroud)
我怎么能在 oneliner 中做到这一点?
解释为什么您的代码不起作用。iter()接受一个可迭代对象并返回一个迭代器。next()获取迭代器并返回下一个元素。在您的代码中,当您从 中取出一个元素时my_manager_list_content,您只能使用 从中取出第一个元素next,然后移动到 的第二个元素my_manager_list_content。这可以通过下面的代码来说明:(@Kevinguan解决方案的扩展)
from multiprocessing import Process, Manager
def f(ll, l):
for ii in range(3):
ll.append(l)
if __name__ == '__main__':
with Manager() as manager:
ll = manager.list()
l = manager.list(range(3))
p = Process(target=f, args=(ll, l))
p.start()
p.join()
print([float(ii) for jj in ll for ii in jj])
print([next(iter(ii)) for ii in ll])
Run Code Online (Sandbox Code Playgroud)
我得到
[0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0]
[0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |