如何在复杂列表推导式中添加print语句输出number?
在质数列表推导式中添加输出语句的方法
列表推导式本质是表达式,没法直接塞print这种语句,但可以用小技巧实现输出需求:
只输出最终筛选出的质数
修改成下面的代码,既保留原有的质数生成逻辑,又能输出每个被选中的质数:
prime_numbers = [ (print(number), number)[1] for number in range(2, 101) if all(number % div != 0 for div in range(2, int(number**0.5) + 1)) ]
原理是利用元组的求值顺序:先执行print(number)输出数字,再取元组的第二个元素number作为列表的元素,完全不影响原列表的生成结果。
输出所有遍历到的数字(不管是不是质数)
如果想看到整个遍历过程,把print放到条件判断里,这样每一个2到100的数都会被输出,再筛选质数:
prime_numbers = [ number for number in range(2, 101) if (print(number), all(number % div != 0 for div in range(2, int(number**0.5) + 1)))[1] ]
内容的提问来源于stack exchange,提问作者DCR
相关产品推荐
相关产品推荐

