在Python中连接集合
在Python中连接集合,python,collections,concatenation,itertools,flatten,Python,Collections,Concatenation,Itertools,Flatten,itertools.chain被称为转换chain('ABC','DEF')-->A B C D E F。然而,我看到了这一点 >>> Set(itertools.chain([(1,2,3),(4,5,6)])) Set([(4, 5, 6), (1, 2, 3)]) 我发现没有任何层次结构受到影响。类似地,list(itertools.chain([[1,2,3],[4,5,6]])也会对列表产生影响。但我看不出我的情况会变平 >>> list(iter
itertools.chain
被称为转换chain('ABC','DEF')-->A B C D E F
。然而,我看到了这一点
>>> Set(itertools.chain([(1,2,3),(4,5,6)]))
Set([(4, 5, 6), (1, 2, 3)])
我发现没有任何层次结构受到影响。类似地,list(itertools.chain([[1,2,3],[4,5,6]])
也会对列表产生影响。但我看不出我的情况会变平
>>> list(itertools.chain([[1,2,3],[4,5,6]]))
[[1, 2, 3], [4, 5, 6]]
到底发生了什么事?第一个参数是一个iterables(元组)列表,而不是。您可以使用
chain.from\u iterable()
将列表展平:
>>> from itertools import chain
>>> list(chain.from_iterable([(1,2,3),(4,5,6)]))
[1, 2, 3, 4, 5, 6]
到底怎么回事
你误读了
答案是这样的:
merged = list(itertools.chain(*list2d))
请注意星号(或“splat”)运算符的使用
在你的问题中,没有这样的运营商:
>>> list(itertools.chain([[1,2,3],[4,5,6]]))
[[1, 2, 3], [4, 5, 6]]
要理解您引用的答案,请尝试以下方法:
>>> list(itertools.chain(*[[1,2,3],[4,5,6]]))
[1, 2, 3, 4, 5, 6]
这相当于拆下最外层的支架:
>>> list(itertools.chain([1,2,3],[4,5,6]))
[1, 2, 3, 4, 5, 6]