从itertools.chain obj获取数组

2024-04-26 18:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有list_of_numbers = [[1, 2], [3], []],我想要更简单的对象列表对象x = [1, 2, 3]

按照this related solution的逻辑,我做了

list_of_numbers = [[1, 2], [3], []]
import itertools
chain = itertools.chain(*list_of_numbers)

不幸的是,chain并不是我想要的,因为(例如)在控制台运行chain会返回<itertools.chain object at 0x7fb535e17790>

函数f是什么,如果我x = f(chain)然后在控制台键入x,我会得到[1, 2, 3]

更新:实际上,我最终需要的结果是array([1, 2, 3])。我将在对所选答案的评论中添加一行来解决此问题。


Tags: of对象函数importchain列表object逻辑
3条回答

如果您的最终目标是获得一个Numpy数组,那么应该在这里使用^{}

>>> import numpy as np
>>> from itertools import chain
>>> list_of_numbers = [[1, 2], [3], []]
>>> np.fromiter(chain(*list_of_numbers), dtype=int)
array([1, 2, 3])
>>> list_of_numbers = [[1, 2]*1000, [3]*1000, []]*1000
>>> %timeit np.fromiter(chain(*list_of_numbers), dtype=int)
10 loops, best of 3: 103 ms per loop
>>> %timeit np.array(list(chain(*list_of_numbers)))
1 loops, best of 3: 199 ms per loop

list。如果你这样做的话,它应该可以工作。但仅用于调试目的,一般来说效率可能很低。

你可以用list(chain)来完成。

相关问题 更多 >