我知道你不应该在迭代它时删除列表的元素,但我必须这样做。 我试图迭代列表列表,如果我在列表列表中找到值,我需要将其删除。 这是我到目前为止所尝试过的。
dict[["A1","A2"],
["B1","B2"],
["C1","C2"]]
for i in range(len(dict)):
if dict[i][0]=="A1":
dict.pop(i)
但它给了我一个超出范围的错误。 如何使用列表推导或任何其他方法来实现?
答案 0 :(得分:3)
你是说这个吗?
old = [["A1","A2"], ["B1","B2"], ["C1","C2"]]
new = [x for x in old if x[0] != "A1"]
答案 1 :(得分:1)
你不能。你会得到一个例外。创建一个新列表作为副本。
>>> disallowed = [1, 2, 3]
>>> my_list = [ [1, 2, 3, 4, 5, 6, 7], [3, 3, 4, 5, 8, 8, 2] ]
>>> filtered_list = [[y for y in x if y not in disallowed] for x in my_list]
>>> print filtered_list
[[4, 5, 6, 7], [4, 5, 8, 8]]
答案 2 :(得分:1)
实际上,您可以在迭代时从列表中删除它,只要向后提供它(因此删除只会影响您在此迭代期间已经看到的更高的索引):
data = [["A1","A2"],
["B1","B2"],
["C1","C2"]]
for i, pair in reversed(data):
if pair[0] == 'A1':
del data[i]