如何在Python中将for循环转换为列表理解

时间:2019-01-24 14:17:16

标签: python list-comprehension

我有一个嵌套的for循环,我想将其转换为python中的列表理解。我该怎么办

all_combinations = []
for i in range(0,size):
    for j in range(i,size):
        if i!=j:
            all_combinations.append((i,j))

4 个答案:

答案 0 :(得分:3)

所有其他答案都可以回答您的问题,但是我想提出一个更好的选择itertools.combinations

from itertools import combinations

print(list(combinations(range(3), 2)))
# [(0, 1), (0, 2), (1, 2)]

为什么更好?

  • 没有重复。我们只指定一次range(3)
  • 这是经过测试的标准库代码。
  • 更短,更易读。
  • (如果使用的是CPython,则可能是这样)。它是用C实现的,这意味着(通常)比嵌套的Python循环要快。

答案 1 :(得分:2)

all_combinations = [(i,j)  for i in range(size) for j in range(i,size) if i!=j]

答案 2 :(得分:1)

列表理解:

all_combinations = [ (i,j) for i in range(0,size) for j in range(i,size) if i!=j ]

答案 3 :(得分:1)

为什么不只是

all_combinations = [(i,j)  for i in range(size) for j in range(i+1,size) ]

不需要if测试,因为它永远不会包含(i,i)