下面的例子似乎表明"对于";值得怀疑。请注意,"c"不在"words"中,但尚未从列表中删除。
phrase = "Don't panic!"
plist = list(phrase)
words = 'on tap'
for char in plist:
# if the char from plist is not in words, then remove it from plist
if char not in words:
plist.remove(char)
else:
pass
print(plist)
['o', 'n', 't', ' ', 'p', 'a', 'n', 'c']
我理解正在发生的事情——"for"序列的初始状态没有保留:迭代不一致。
也许是我。然而,在tcl中实现的相同逻辑会产生一个反映"foreach"迭代意图的结果:
o n t ' ' p a n
请告诉我关于Python迭代缺少什么。Rick
在迭代集合时不应该修改它。创建一个新数组并将所需元素推入其中。
phrase = "Don't panic!"
plist = list(phrase)
words = 'on tap'
result = []
for char in plist:
if char in words:
result.append(char)
print(result)
输出['o', 'n', 't', ' ', 'p', 'a', 'n']