这个参考答案不懂
这个看不懂,谁能帮我详解一下
这个看不懂,谁能帮我详解一下
2016-05-03
[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的作用其实就是筛选的意思。
举报