从列表中擦除浮点数和小于n的其他数字



我有一个整数/浮点数列表,下面我有一个for循环,它的目标是从列表中删除所有小于1000的数字。

percentages = [2000, 10, 69.29]
for percentage in percentages:
if percentage < 1000:
print("PASS")
n = percentages.index(percentage)
del percentages[n]
if percentage >= 1000:
print("Qualified")
print(percentages)

但是,十进制数将被完全忽略。我做错了什么?

可以不使用显式循环过滤列表。

percentages = [2000, 10, 69.29]
percentages = filter(lambda x: x > 1000, percentages)
percentages = list(percentages)
print(percentages)

尝试列表推导-

percentages = [2000, 10, 69.29]
percentages = [i for i in percentages if i > 1000]
print(percentages)

您可以将数字添加到列表推导中,同时使用必要的条件对它们进行过滤。

percentages = [2000, 10, 69.29]
print([n for n in percentages if n > 1000 or type(n) is not float])

try this:

percentages = [2000, 10, 69.29]
newPercentages = []
for percentage in percentages:
if percentage < 810:
pass
if percentage >= 810:
newPercentages.append(percentage)
print(newPercentages)

这将所有内容附加到一个新列表中,但我认为这很好

出现这种行为的原因是您正在从列表中删除一个元素,同时遍历它。尝试在for循环中打印列表,您将了解其行为。试试下面的代码,它会给出正确的结果。

percentages = [2000, 10, 69.29, 70]
out = []
for percentage in percentages:
if percentage < 1000:
print("PASS") 
if percentage >= 1000:
print("Qualified")
out.append(percentage)
print(out)

输出:

Qualified
PASS
PASS
PASS
[2000]

使用,

percentages = [2000, 10, 69.29]
percentages = [i for i in percentages if i > 1000]

列表压缩只是一种更简短、更有效的for循环编写方式。这里,如果i大于1000,则将i添加到列表中。它过滤了小于1000

的内容

相关内容