Skip to main content
 首页 » 编程设计

python之For循环迭代似乎跳过了列表中的两个数字

2025年05月04日20arxive

当运行下面的代码时,我不明白为什么它不删除所有的 1?它保留了其中两个,并且在 if 语句之前添加了我的两个打印语句,它显示程序似乎跳过了 4 个 1 中的最后 2 个。我知道有一种更简单的方法可以做到这一点,我只是想了解为什么这不起作用的逻辑。

numbers3 = [1, 1, 1, 1, 4, 5, 7, 7, 9] 
print(numbers3.count(1)) 
 
for number in numbers3: 
    print(numbers3.count(number)) 
    print(number) 
    if numbers3.count(number) > 1: 
        numbers3.remove(number) 
print(numbers3) 

我希望输出为 [1, 4, 5, 7, 9] 但是我得到 [1, 1, 4, 5, 7, 9]

请您参考如下方法:

欢迎使用 Stackoverflow。

问题是您正在修改正在迭代的列表,这在 Python(或大多数其他语言)中很少能获得令人满意的结果。

初学者提出的问题很常见,这些问题有用地告诉我们预期的输出是什么,但没有告诉我们为什么。阅读您的代码,我推断(或者更确切地说是猜测)您想要一个包含每个唯一数字的单个副本的列表。

实现您的目标的一种方法是构建一个单独的列表,列出您想要的数字。所以这个(未经测试的)应该有效:

result = [] 
for number in numbers3: 
    if number not in result: 
        result.append(number) 

一个更简单的方法,因为 Python 3.6 应该保留顺序,将是

result = list(set(numbers3))