如何在Python中将嵌套循环转换为嵌套的综合列表?

时间:2014-05-06 11:31:39

标签: python

我有问题将3级循环转换为综合列表

for a in X:
  for b in a:
     for c in b:
        do(c)

我希望它在列表中只是作为验证代码的快速工具。 我理解利弊,知道itertools.chain函数。

2级解决方案是:

[do(b)      for a in X        for b in a]

3级解决方案是:

[do(c)      for b in itertools.chain.from_iterable(X)         for c in b]

如果不使用链条会如何看?只列出表达。

2 个答案:

答案 0 :(得分:0)

[c for a in X for b in a for c in b]

X的展平版本。 for子句的出现顺序与它们在嵌套循环中的顺序相同。

答案 1 :(得分:0)

谢谢你:

[c      for a in X         for b in a       for c in b]

通常用于任何数量的级别和更好的助记符方法:

[z      for a in A         for b in a       for c in b    ...    for z in y]