鱼C论坛

 找回密码
 立即注册
查看: 1556|回复: 3

[已解决]这一长串的运算顺序

[复制链接]
发表于 2020-8-3 10:04:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
哪位大神能帮我解释下,这串代码的运算顺序啊。这中括号小括号外加for循环,我看晕了,不知道他是怎么运算的了
print('\n'.join([' '.join(['%s*%s=%s'%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-3 10:07:23 | 显示全部楼层    本楼为最佳答案   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
        ]
    )
)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 10:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表