[英]Can someone explain this program to me?
以下表達式作為值產生什么:
[(x, x*y) for x in range(2) for y in range(2)]
[(0,0), (0,1), (1,0), (1,1)]
[0, 1, 2]
[(0,0), (1,0), (0,0), (1,1)]
[(0,0), (0,0), (1,0), (1,1)]
以上都不是
答案是4 ,但我不明白為什么。
讀為:
for x in range(2): # 0,1
for y in range(2): # 0,1
(x, x*y)
假設python 2。
range(2)
返回列表[0, 1]
[(x, x*y) for x in [0, 1] for y in [0,1]]
因此,x和y將是列表[0, 1]
和[0, 1]
[0, 1]
所有組合
[(x, x*y) for (x, y) in [(0, 0), (0, 1), (1, 0), (1, 1)]]
x y x*y (x, x*y)
0 0 0 (0, 0)
0 1 0 (0, 0)
1 0 0 (1, 0)
1 1 1 (1, 1)
閱讀為
list = [];
for x in range(2):
for y in range(2):
list.append((x, x*y))
基本上它將使用以下X,Y值迭代4次
X=0, Y=0
X=0, Y=1
X=1, Y=0
X=1, Y=1
零乘以零將始終為零,因此得到4個數組
First Index = 0, 0*0
Second Index = 0, 0*1
Third Index = 1, 1*0
Fourth Index = 1, 1*1
嵌套列表推導的工作方式與您為此類循環編寫的方式相同。
因此,您的示例列表理解類似於此生成器函數:
def example():
for x in range(2):
for y in range(2):
yield (x, x*y)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.