Python 为什么不是';我的列表不起作用吗?

Python 为什么不是';我的列表不起作用吗?,python,Python,我试图从一个不包含用户输入的零数的列表中删除二进制数 a = [] for i in range(512): a.append(format(i, '09b')) b = int(input("Enter zeroes: ")) for i in a: if i.count('0') != b: del(i) for i in a: print(i) 但是运行这段代码仍然会得到完整的9位数字列表。我哪里出错了?您需要使用才能从列表中删除某些内容

我试图从一个不包含用户输入的零数的列表中删除二进制数

a = []

for i in range(512):
    a.append(format(i, '09b'))

b = int(input("Enter zeroes: "))

for i in a:
    if i.count('0') != b:
        del(i)

for i in a:
    print(i)
但是运行这段代码仍然会得到完整的9位数字列表。我哪里出错了?

您需要使用才能从列表中删除某些内容

但是,您最好简单地重新创建列表,如下所示:

new_a = [i for i in a if i.count('0') == b]
它更具功能性,更清楚地表达了您想要做的事情。它也可能更有效。从列表中随机删除项目是一种线性操作。如果你做了
n次
,你可能会得到一个二次算法。重建列表只是线性的。

您需要使用才能从列表中删除某些内容

但是,您最好简单地重新创建列表,如下所示:

new_a = [i for i in a if i.count('0') == b]

它更具功能性,更清楚地表达了您想要做的事情。它也可能更有效。从列表中随机删除项目是一种线性操作。如果你做了
n次
,你可能会得到一个二次算法。重建列表只是线性的。

del
不会操纵列表,而是使用列表理解
a=[i for i in a if(i.count(“0”)!=b)]
del不会从列表中删除项目。你无论如何也不能这样做。
del
不会操纵列表,而是使用列表理解
a=[i for i in a if(i.count(“0”)!=b)]
del不会从列表中删除项目。你无论如何也不能这么做。