直接上代码可能更直观点:
y= [x*x for x in range(10)]
print(y)
输出的是一个列表:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
这段代码类似的就是:
for x in range(10):
print(x*x)
首先for b in a 很好理解:我们从a里面取出每一个迭代对象b。
然后我们对这个b进行c操作,并且以c操作后的形式输出一个列表。
所以上例实现的就是输出一个从0~99的平方数的列表。
按照这个理解,我们同样也可以遍历生成一个2D坐标数。
t= [(x,y) for x in range(2) for y in range(3)]
print(t)
输出的就是:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
和上述一致,这段代码类似的就是
t=[]
for x in range(2):
for y in range(3):
t.append((x,y))
print(t)
从右往左看,首先y取0值,往左边走,x此时取值为0,在往左边走,就直接输出(x,y)也就是(0,0)了
第二次,y取值为1,x此时不变(等y变完才会改变)....以此类推
这类写法都是为了代码更简洁的,想要代码更好看一点最好试着这么写啦~