我正在尝试从列表中删除不包含用户输入的零数的二进制数。
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位数的完整列表。我哪里错了?
答案 0 :(得分:0)
您需要使用a.pop
才能从列表中删除某些内容。
但是,只需重新创建列表就会好得多,例如:
new_a = [i for i in a if i.count('0') == b]
它更具功能性,更清楚地表达了您正在尝试做的事情。它也可能更有效率。从列表中随机删除项目是线性操作。如果你这样做n
次,你最终可能会得到二次算法。重建列表只是线性的。