发布网友 发布时间:2022-04-22 14:41
共3个回答
热心网友 时间:2022-05-10 20:00
因为你的第一张图里的第一个for里用了y,所以显然是第二个for嵌套第一个for。谢谢你的回答,我能理解你的意思,但是我尝试这给第一张图里的语句变化了一下,直接给第一个for循环中的y+1变成10,而给第二个for循环中10变成x+1,这样调换一下顺序,为什么就不行了,应该就会从左向右执行了呀,而且报错是说x没有被定义
热心网友 时间:2022-05-10 21:18
推导式的语法不熟悉,可以先按普通语法还原一下
比如图2等效于:
多写几次就弄清了
热心网友 时间:2022-05-10 22:53
我提楼上回答你追问的问题,你括号位置错了,正确如下
print(' '.join(['{}x{}={}'.format(x,y,x*y) for x in range(1,10) for y in range(1,x+1)]))追问谢老哥,我按照你这个执行没问题,然后我在你基础上,把10和x+1,又改回去了,前后变成y+1和10,又报错了。。。不是故意挑事,我感觉我哪里没有理解对
追答
第一行是你第一张图的代码,第二行应该是你刚才改过来的,看到区别了吗,join函数后半个括号的位置不同,第一个把for x也括进去了,所以成为了一个整体,这个整体首先依赖for y,然后在进整体里面,依赖for x,而第二行两个for属于并列关系,右边的依赖左边,所以说报错了。