1

删除列表中列表层次结构的最 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)]
4

4 回答 4

2
import operator
reduce(operator.add, A)

或者

reduce(lambda x,y:x+y, A)
于 2013-10-11T03:17:00.680 回答
2

使用chain.from_iterable展开嵌套列表更符合 Pythonic

>>> from itertools import chain
>>> list(chain.from_iterable(A))
[(1, 1), (2, 2), (1, 1), (2, 2), (3, 3), (1, 1)]
于 2013-10-11T03:21:54.007 回答
1

“最pythonic”可以无休止地争论。我更喜欢嵌套列表理解来展平嵌套列表。

B = [element for sublist in A for element in sublist]

归根结底,请使用对您来说最易读的内容,因为您可能是最经常与您的代码交互的人。

于 2013-10-11T03:21:05.440 回答
1
import itertools

a = [[(1, 1), (2, 2)],[(1, 1), (2, 2), (3, 3)], [(1, 1)]]

list(itertools.chain(*a))

查看itertools 模块。很多好东西。

于 2013-10-11T03:23:03.870 回答