python - 如何删除列表中除 1 个数字(Python)之外的所有数字?

标签 python for-loop

我希望我的代码删除列表中除特定数字(3)之外的所有数字。相反,它会删除某些数字,但其中大部分仍保留在列表中。

myList = [0,1,2,3,4,5]
i = 0
for i in myList:
    print(i)
    if i != 3:
        myList.remove(i)
    else:
        continue
    i += 1
    print(myList)

最佳答案

您遇到了一些问题。首先,您在尝试处理列表时尝试就地修改列表。您可以通过更改来解决此问题:

for i in myList:

到:

for i in myList[:]:

这将使您的代码给出所需的结果。它创建了一个列表的“副本”以供迭代,因此您可以修改原始列表而不会弄乱您的迭代循环。

另一件需要注意的事情是,您在 for 循环中为 i 分配了一个值,但是随后您在 if-else< 之后手动更改了它 block 。当您返回到循环顶部时,该更改将被丢弃。

此外,您else: continue 阻止递增i,但这没关系,因为递增的值无论如何都会被丢弃。

所以...注释掉一些不必要的东西可以得到:

myList = [0,1,2,3,4,5]
# i = 0
for i in myList[:]:
    print(i)
    if i != 3:
        myList.remove(i)
    # else:
        # continue
    # i += 1
    print(myList)

关于python - 如何删除列表中除 1 个数字(Python)之外的所有数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65515132/

相关文章:

Python:有没有比使用自动更正拼写更正更快的方法?

python - 持续处理来自 PostGres 数据库的数据——采用什么方法?

python - 将前导零添加到字符串 Python

batch-file - 对于/f delims : ignore second occurance of delim-character in a line

Python:如何使用正则表达式拆分列中的值并保留右侧?

python - 获取与同一个表中的父元素相关的子元素

c - 重新定义 'i'错误

Windows 批处理 For 循环在一台服务器上不工作,在其他服务器上工作

php - 如何在 for 循环中循环以获取具有相同 ID 的多个值

for-loop - For 循环 : can the end value come from the value of a variable?