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]]))
is said会对列表产生影响。但我认为在我的情况下没有扁平化
>>> list(itertools.chain([[1,2,3],[4,5,6]]))
[[1, 2, 3], [4, 5, 6]]
到底是怎么回事?
答案 0 :(得分:2)
到底是怎么回事?
答案就是这句话:
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]
答案 1 :(得分:1)
第一个参数是迭代(元组)列表而不是one iterable。您可以使用chain.from_iterable()
展平您的列表:
>>> from itertools import chain
>>> list(chain.from_iterable([(1,2,3),(4,5,6)]))
[1, 2, 3, 4, 5, 6]