Python筛选列表中低于平均值的元素时结果列表为空如何解决
问题排查
核心错误出在第二个循环的判断条件:
第一个while循环结束后,你生成的随机数列表长度已经等于aantal,第二个循环的判断条件写的是while len(list) < aantal,这个条件永远不会成立,所以循环内部代码完全没有执行,kleiner自然一直是空的。
另外还有两个隐藏问题需要修复:
- 你把
list作为变量名使用,会覆盖Python内置的list类型,属于不规范写法,建议改为其他名称 - 你当前的
teller自增逻辑写在if判断内部,只有元素小于平均值时才会自增,一旦遇到大于等于平均值的元素,teller会一直停留在当前索引,导致死循环
修复后代码
from random import randint kleiner = [] getallenlijst = [] teller = 0 aantal = int(input("Hoeveel random getallen wilt u? ")) veelvoud = int(input("Welke veelvoud? ")) while len(getallenlijst) < aantal: getal = randint(1, 100) if getal % veelvoud == 0: getallenlijst.append(getal) gemiddelde = sum(getallenlijst) / len(getallenlijst) # 修正循环条件,遍历整个列表 while teller < len(getallenlijst): if getallenlijst[teller] < gemiddelde: kleiner.append(getallenlijst[teller]) # 不管是否满足条件,索引都要自增 teller += 1 print(getallenlijst) print(getallenlijst[::-1]) print(kleiner)
你也可以用更简洁的for循环替代手动维护索引的while循环:
# 替代第二个while循环 for num in getallenlijst: if num < gemiddelde: kleiner.append(num)
内容的提问来源于stack exchange,提问作者Xattics
相关产品推荐
相关产品推荐

