最好的信息源是
official Python tutorial on list comprehensions.列表推导与循环几乎相同(当然任何列表推导都可以写为循环),但它们通常比使用for循环更快。
从教程中查看这个更长的列表解析(if部分过滤理解,只有通过if语句的部分被传递到列表推导的最后部分(这里是(x,y)):
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
它和这个嵌套的for循环完全相同(正如教程中所说,注意如果for和if的顺序是相同的)。
>>> combs = []
>>> for x in [1,2,3]:
... for y in [3,1,4]:
... if x != y:
... combs.append((x, y))
...
>>> combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
列表推导和for循环之间的主要区别是,for循环的最后一部分(你做某事)在开始而不是结束。
关于您的问题:
What type must object be in order to use this for loop structure?
一个iterable.任何可以生成一组(有限)元素的对象。这些包括任何容器,列表,集合,生成器等。
What is the order in wh