为什么我的列表迭代不起作用?

时间:2016-11-18 12:14:56

标签: 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位数的完整列表。我哪里错了?

1 个答案:

答案 0 :(得分:0)

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

但是,只需重新创建列表就会好得多,例如:

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

它更具功能性,更清楚地表达了您正在尝试做的事情。它也可能更有效率。从列表中随机删除项目是线性操作。如果你这样做n次,你最终可能会得到二次算法。重建列表只是线性的。