鱼C论坛

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

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

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

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

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

x
哪位大神能帮我解释下,这串代码的运算顺序啊。这中括号小括号外加for循环,我看晕了,不知道他是怎么运算的了
  1. 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 | 显示全部楼层
加了缩进,能看懂了么?
  1. print(
  2.     '\n'.join(
  3.         [
  4.             ' '.join(
  5.                 [
  6.                     '%s*%s=%s' % (y, x, x * y)
  7.                     for y in range(1, x + 1)
  8.                 ]
  9.             )
  10.             for x in range(1, 10)
  11.         ]
  12.     )
  13. )
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-3 10:17:20 | 显示全部楼层

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

  1. result = []  
  2. for x in range(1,10):
  3.     temp = []
  4.     for y in range(1,x+1):
  5.         temp.append('%s*%s=%s'%(y,x,x*y))
  6.     result.append(' '.join(temp))
  7. result = '\n'.join(result)
  8. print(result)
复制代码


输出结果:
  1. 1*1=1
  2. 1*2=2 2*2=4
  3. 1*3=3 2*3=6 3*3=9
  4. 1*4=4 2*4=8 3*4=12 4*4=16
  5. 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
  6. 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
  7. 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
  8. 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
  9. 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, 2024-3-29 04:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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