为了账号安全,请及时绑定邮箱和手机立即绑定

这个参考答案不懂

http://img1.sycdn.imooc.com//5728acc00001879203760245.jpg这个看不懂,谁能帮我详解一下

正在回答

2 回答

[100*n1 + 10*n2 + n3   for n1 in range(1, 10)  for n2 in range(10)  for n2 in range(10)  if n1==n3]

这个代码可以分为三段:

第一段是 100*n1 + 10*n2 + n3 这个其实就是把 n1 放到百位上, n2 放到10位上, n3 放到 各位上,组成一个三位数。


第二段是 三个for  对应着 限制了 n1 (1至9), n2(0至9), n3(1至9) 的取值范围, 这个很好理解, 为了最终取出 个位和百位 相等的三位数, n1 不能为0, 自然 n3 也就不能为0


第三段是 if n1 == n3 , 这个就是对列表推导式中 取值的限制, 只有 n1 == n3 的时候 才会赋值给第一段,才会放入到最终生成的列表中。 


基本就这样了, 如果这个比较麻烦的话,可以举两个简单的例子:

print [x-y  for x in [4,5,6]  for y in [1,1,2]]
[3, 4, 4]
## 解释, x, y  依次从 各自的 for in 中顺序取值,在运算,最后放入到生成的列表中。

print [x for x  in range(10) if x%2==0]
[0, 2, 4, 6, 8]
## 解释, 依然是 从 for in 中取值, 但是之后符合 if 后面的条件的, 才放入 最后生成的列表中。


## 这两个例子, 一个讲 多个值 的 列表推导式, 另一个讲 列表推导式中 if的作用其实就是筛选的意思。


2 回复 有任何疑惑可以回复我~
#1

没有什么不可能 提问者

非常感谢!
2016-05-04 回复 有任何疑惑可以回复我~
#2

程序迪

你好!你举的例子: print [x-y for x in [4, 5, 6] for y in [1, 1, 2]] 打印结果是不是应该为[3, 3, 2, 4, 4, 3, 5, 5, 4] 我也是新手 求指导!
2016-07-18 回复 有任何疑惑可以回复我~
#3

清波 回复 程序迪

对,我的疏忽,课程的答复不能修改,感谢指正。
2016-07-19 回复 有任何疑惑可以回复我~
#4

程序迪 回复 清波

但是为什么是这样而不是每个索引相对应的相减呢?这是什么原理?
2016-07-19 回复 有任何疑惑可以回复我~
#5

程序迪 回复 清波

但为什么是这样而不是两个list中每个索引相对应的相减呢?是什么原理?求解!
2016-07-19 回复 有任何疑惑可以回复我~
#6

清波 回复 程序迪

额,回复里面也不能带格式,我只能说 依次两个 for in 相当于 第二个写在第一个里面。
2016-07-20 回复 有任何疑惑可以回复我~
#7

程序迪 回复 清波

还是不太理解...
2016-07-20 回复 有任何疑惑可以回复我~
#8

波函数的魔方

太给力了
2016-08-08 回复 有任何疑惑可以回复我~
查看5条回复
print [100 * n1 + 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10) if n1==n3]

为什么n2和n3要表示为range(10)?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758357    人
  • 解答问题       8967    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

这个参考答案不懂

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号