【发布时间】:2021-03-30 23:02:25
【问题描述】:
我正在用 python 制作一个 Gui 应用程序,我使用的是一个简单的 sn-p。我不明白为什么会这样。 代码:
k = ["Saikat","Ananya"]
names = ["Saikat","Ananya","Sam"]
for i in range (0,len(k)):
if k[i] in names:
names.pop(i)
print(names)
这里最后,名称数组由“Ananya”组成,而不是它应该有的“Sam”。我无法弄清楚这里出了什么问题。
谢谢大家的回答,但这是我面临的真正问题。我试图最小化代码,但是这些解决方案并没有解决我在可靠性方面面临的问题。
app_list = [["saikat","male"],["ananya","female"],["sam","male"],["joe","male"]]
k= ["Sam","joe"]
for i in (app_list):
print(i[0])
if i[0] in k:
app_list.remove(i)
现在它确实删除了“sam”,但没有删除“joe”。
【问题讨论】:
-
首先可以看到
'Sam' == 'sam'是False。在循环时第二次打印app_list(请参阅我的答案),您可以发现列表在循环时被修改。最快的解决方法是遍历列表的副本:for i in app_list.copy():
标签: python python-3.x list