我想知道如何使用另一个列表来消除列表中的元素。 例如,假设我有:
eliminate([['dog', 'cat'], ['cat', 'fish'], ['dog', 'hamster]], ['dog', 'cat'])
[[], ['fish'], ['hamster]]
我尝试遍历子列表的所有元素,并检查它们是否在第二个列表中,以将它们删除,但得到的列表与原始列表相同。 任何帮助都会很好
def eliminate(ballots, to_eliminate):
for sublist in ballots:
for elem in sublist:
if elem in to_eliminate:
ballots.pop(sublist.index(elem))
return ballots
如果可以返回新列表
学会使用
print
语句来调试你的程序,如果你没有尝试的话。例如:输出:
这很清楚地表明了你的问题
确定消除元素
dog
位于该子列表的位置0处的一个子列表中。通过删除ballots[0]
,而不是您标识的元素来处理这个问题。修复pop
引用其次,您跳过
ballots
中的子列表,因为您在遍历列表时正在更改它。相反,创建一个只包含要保留的元素的新列表。这是许多语言中的一个常见错误,在这里的堆栈溢出中有几个重复的错误相关问题 更多 >
编程相关推荐