Python - 删除List-in-List层次结构?

时间:2013-10-11 03:09:04

标签: python

删除列表中列表层次结构的最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 个答案:

答案 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。很多好东西。