Python 为什么代码在第一次执行remove方法后退出循环
代码基本上是输入两个列表,并按字母顺序相互比较,如果在两个单词中都找不到字母,则删除该字母 但我的情况是,一旦第一个字母(即在两个单词中都找不到)被删除,它就会退出循环为什么会这样Python 为什么代码在第一次执行remove方法后退出循环,python,python-3.x,Python,Python 3.x,代码基本上是输入两个列表,并按字母顺序相互比较,如果在两个单词中都找不到字母,则删除该字母 但我的情况是,一旦第一个字母(即在两个单词中都找不到)被删除,它就会退出循环为什么会这样 a = input() b = input() al = list(a) >abc bl = list(b) >cde cnt = 0 for x in al: if x not in bl: al.remove(x)
a = input()
b = input()
al = list(a) >abc
bl = list(b) >cde
cnt = 0
for x in al:
if x not in bl:
al.remove(x)
cnt = cnt + 1
它确实完成了for循环,因为您正在运行时对列表进行更改,同时您正在对其进行迭代,这意味着
当
al
列表中的字母a
未在bl
列表中找到时,它将立即从al
列表中删除
列表将是['b','c']
现在在for循环中
即for x in al
意味着是列表的第二个元素,因此列表的第二个元素是'c'
,它在列表bl中,因此al
中没有其他元素可以迭代,因此它退出循环
为了做到这一点,您可以使用临时列表来删除,这样它就不会影响真正的列表
a = input()
b = input()
al = list(a)
bl = list(b)
temp_a = al.copy()
cnt = 0
for x in al:
if x not in bl:
temp_a.remove(x)
cnt = cnt + 1
print(temp_a)
Output:
['c']
什么是abc?Thanx。理解。