我有问题将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]
如果不使用链条会如何看?只列出表达。
答案 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]