Congratulate 发表于 2020-8-3 10:04:41

这一长串的运算顺序

哪位大神能帮我解释下,这串代码的运算顺序啊。这中括号小括号外加for循环,我看晕了,不知道他是怎么运算的了{:10_266:}
print('\n'.join([' '.join(['%s*%s=%s'%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))

Hello. 发表于 2020-8-3 10:07:23

https://www.jianshu.com/p/fe8ce0dac4e1

永恒的蓝色梦想 发表于 2020-8-3 10:15:43

加了缩进,能看懂了么?print(
    '\n'.join(
      [
            ' '.join(
                [
                  '%s*%s=%s' % (y, x, x * y)
                  for y in range(1, x + 1)
                ]
            )
            for x in range(1, 10)
      ]
    )
)

Twilight6 发表于 2020-8-3 10:17:20


实际上展开就可以类似看成这样,只是没有找 temp 和 result 变量来赋值而已:

result = []
for x in range(1,10):
    temp = []
    for y in range(1,x+1):
      temp.append('%s*%s=%s'%(y,x,x*y))
    result.append(' '.join(temp))
result = '\n'.join(result)
print(result)

输出结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
页: [1]
查看完整版本: 这一长串的运算顺序