如何实现Python列表中小于18的数字不被打印?
修正Python代码实现“跳过小于18的数字不打印”的需求
原代码问题分析
原代码逻辑完全偏离需求:当遍历到小于18的元素时,没有跳过该元素,反而复制了整个列表并打印,导致每次遇到小于18的元素就输出一次完整列表,最终得到5次重复的完整列表输出。
修正后的代码方案
方案1:基础遍历+条件判断(最直观)
直接遍历列表,仅打印大于等于18的元素:
x = [17, 15, 18, 21, 5, 6] for y in x: if y >= 18: print(y)
运行输出:
18 21
方案2:先筛选再打印(适合需要复用筛选结果的场景)
先用列表推导式筛选出符合条件的元素,再遍历打印:
x = [17, 15, 18, 21, 5, 6] valid_numbers = [num for num in x if num >= 18] for num in valid_numbers: print(num)
如果需要一次性输出所有符合条件的元素,也可以直接打印筛选后的列表:
x = [17, 15, 18, 21, 5, 6] print([num for num in x if num >= 18])
运行输出:
[18, 21]
原代码错误点总结
- 条件判断逻辑写反:应该判断
y >= 18才执行打印,而非y < 18 - 多余的列表复制操作:
y = x.copy()完全没必要,这会将整个列表赋值给y,导致打印完整列表而非单个元素
内容的提问来源于stack exchange,提问作者JK Lite
相关产品推荐
相关产品推荐

