可能重复:
在Python中列出列表列表中的平面列表
我试图找到一种简单的方法将多维(嵌套)python列表转换为单个列表,其中包含子列表的所有元素.
例如:
A = [[1,2,3,4,5]]
Run Code Online (Sandbox Code Playgroud)
转向
A = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
要么
A = [[1,2], [3,4]]
Run Code Online (Sandbox Code Playgroud)
转向
A = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
moo*_*eep 43
itertools.chain(*iterables):创建一个迭代器,它返回第一个iterable中的元素,直到它耗尽,然后进入下一个iterable,直到所有的iterables都用完为止.用于将连续序列作为单个序列处理.
from itertools import chain
A = [[1,2], [3,4]]
print list(chain(*A))
# or better: (available since Python 2.6)
print list(chain.from_iterable(A))
Run Code Online (Sandbox Code Playgroud)
输出是:
[1, 2, 3, 4]
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
lol*_*llo 27
使用reduce功能
reduce(lambda x, y: x + y, A, [])
Run Code Online (Sandbox Code Playgroud)
要么 sum
sum(A, [])
Run Code Online (Sandbox Code Playgroud)
第一种情况也可以轻松完成:
A=A[0]
Run Code Online (Sandbox Code Playgroud)
itertools为此提供了链函数:
来自http://docs.python.org/library/itertools.html#recipes:
def flatten(listOfLists):
"Flatten one level of nesting"
return chain.from_iterable(listOfLists)
Run Code Online (Sandbox Code Playgroud)
请注意,结果是一个可迭代的,因此您可能需要list(flatten(...)).
| 归档时间: |
|
| 查看次数: |
76821 次 |
| 最近记录: |