簡體   English   中英

如何在Python中將for循環轉換為列表理解

[英]How to convert a for loop to a list comprehension in python

我有一個嵌套的for循環,我想將其轉換為python中的列表理解。 我怎樣才能做到這一點

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

所有其他答案都回答了您的問題,但我想提出一個更好的替代方法itertools.combinations

from itertools import combinations

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

為什么會更好?

  • 沒有重復。 我們僅指定一次range(3)
  • 它是經過測試的標准庫代碼。
  • 更短,更易讀。
  • (如果使用的是CPython,則可能是這樣)。它是用C實現的,這意味着(通常)比嵌套的Python循環要快。
all_combinations = [(i,j)  for i in range(size) for j in range(i,size) if i!=j]

清單理解:

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

為什么不只是

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

不需要if測試,因為它永遠不會包含(i,i)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM