删除列表中列表层次结构的最Pythonic方式是什么?
即来自
A=[[(1, 1), (2, 2)],[(1, 1), (2, 2), (3, 3)], [(1, 1)]]
到
B=[(1, 1), (2, 2), (1, 1), (2, 2), (3, 3), (1, 1)]
答案 0 :(得分:2)
import operator
reduce(operator.add, A)
或
reduce(lambda x,y:x+y, A)
答案 1 :(得分:2)
更多Pythonic使用chain.from_iterable打开嵌套列表
>>> from itertools import chain
>>> list(chain.from_iterable(A))
[(1, 1), (2, 2), (1, 1), (2, 2), (3, 3), (1, 1)]
答案 2 :(得分:1)
“大多数pythonic”可以无休止地辩论。我更喜欢嵌套列表理解来展平嵌套列表。
B = [element for sublist in A for element in sublist]
当涉及到它时,请使用您最易读的内容,因为您可能是最常与您的代码交互的人。
答案 3 :(得分:1)
import itertools
a = [[(1, 1), (2, 2)],[(1, 1), (2, 2), (3, 3)], [(1, 1)]]
list(itertools.chain(*a))
查看itertools module。很多好东西。