caeser 发表于 2022-11-9 17:19:59

如何把列表推导式转换为循环的形式?

在做第24课关于杨辉三角的作业,在网上搜索到一个程序,里面的推导式没有看懂,想转换成循环的形式,没有成功,求助各位老师和大神:
n =
for i in range(10):
      print(*n)
      n.append(0)
      n = + n for k in range(i+2)]

最后一句推导式没有看懂,于是把它转换为循环的形式:
for k in range(i+2):
                n=n + n

但结果不对,各位老师和大神可以帮我看看哪里出错了吗?谢谢

jackz007 发表于 2022-11-9 18:01:25

本帖最后由 jackz007 于 2022-11-9 18:32 编辑

      n 是上一行的列表,列表推导式是根据上一行的列表新产生本行的列表,并直接覆盖上一行的列表 n,由于新列表产生之前,n 是产生新列表的依据,所以,解决问题的关键是,本行的列表必须另起炉灶。等新列表就绪了,再覆盖成上一行的列表 n。
      n = + n for k in range(i+2)]
      所以,这一行代码应该被分解成
      d = []
      for k in range(i + 2) : d . append(n + n)
      n = d
页: [1]
查看完整版本: 如何把列表推导式转换为循环的形式?