我有一個嵌套的 for 循環,我想將它轉換為 python 中的列表理解。我怎樣才能做到這一點all_combinations = []for i in range(0,size): for j in range(i,size): if i!=j: all_combinations.append((i,j))
3 回答

森欄
TA貢獻1810條經驗 獲得超5個贊
所有其他答案都回答了您的問題,但我想建議一個更好的選擇itertools.combinations:
from itertools import combinations
print(list(combinations(range(3), 2)))
# [(0, 1), (0, 2), (1, 2)]
為什么更好?
沒有重復。我們range(3)只指定一次。
它經過測試,標準庫代碼。
更短,更易讀。
(如果使用 CPython,你可能是)它是用 C 實現的,這意味著它(通常)比嵌套的 Python 循環更快。

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
all_combinations = [(i,j) for i in range(size) for j in range(i,size) if i!=j]

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
為什么不只是
all_combinations = [(i,j) for i in range(size) for j in range(i+1,size) ]
不需要 if 測試,因為這永遠不會包括 (i,i)
添加回答
舉報
0/150
提交
取消