水月洞天

列表解析 List Comprehensions

表达式:[expression for iter_val in iterable if cond_expr]
  • [expression]:最后执行的结果
  • [for iter_val in iterable]:这个可以是一个多层循环
  • [if cond_expr]:两个for间是不能有判断语句的,判断语句只能在最后;顺序不定,默认是左到右。

讨论下多个 for 循环的执行顺序。

从左到右:

>>> print[(x,y)for x in [1,2]for y in [3,4]]
[(1, 3), (1, 4), (2, 3), (2, 4)]
>>> print[(x,y)for x in [1,2]for y in [3,x]]
[(1, 3), (1, 1), (2, 3), (2, 2)]
>>> 

从右到左:

>>> print[(x,y)for x in [1,y]for y in [3,4]]
[(1, 3), (1, 4), (2, 3), (2, 4)]
>>>