复杂的列表理解

时间:2015-07-02 21:37:24

标签: python list-comprehension

你如何处理它们? 一个愚蠢的例子:让我们说我们有一个这样的列表

a = [[[1,2],[3,4]],[[5,6],[7,8]]]

我要打印

[1,2,3,4,5,6,7,8]

我提出的方法如下:

print [b[t] for b in [c[w] for c in a for w in xrange(len(c))] for t in xrange(len(b))]

我觉得这很难看。有没有更好的方法来获得相同的结果?

4 个答案:

答案 0 :(得分:4)

x = [d for b in a for c in b for d in c]

或使用itertools.chain.from_iterable

import itertools
flatten = itertools.chain.from_iterable
x = list(flatten(flatten(a)))

答案 1 :(得分:0)

您希望展平列表以获取所有项目。我会尝试itertools.chain.from_iterable这样做:

itertools.chain.from_iterable(itertools.chain.from_iterable(a)) # unpack the list twice

答案 2 :(得分:0)

Numpy也有效:

print list(np.array(a).flatten())

答案 3 :(得分:-1)

当然有更好的方法:

list(itertools.chain.fromiterable(a))