从列表中删除单个字符

Mor*_*nTN 0 python string iteration list

我无法理解为什么我的代码无法正常工作.我试图从列表中删除长度只有一个字符的单词:

line = ['word','a','b','c','d','e','f','g']
for words in line:
    if len(words) == 1:
        line.remove(words)
Run Code Online (Sandbox Code Playgroud)

此代码返回此(它看起来删除'每隔一个'单个字符):

>>> line
['word', 'b', 'd', 'f']
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这不正常以及如何解决?

Aam*_*nan 5

做这个:

line = ['word','a','b','c','d','e','f','g']
line = [i for i in line if len(i) > 1]
Run Code Online (Sandbox Code Playgroud)

您的代码的问题是您在迭代时从列表中删除这是不安全的.它会改变列表的长度:

line = ['word','a','b','c','d','e','f','g']
iterated = 0
removed = 0
for words in line:
    iterated += 1
    if len(words) == 1:
        line.remove(words)
        removed += 1

print line # ['word', 'b', 'd', 'f']
print iterated # 5
print removed # 4
Run Code Online (Sandbox Code Playgroud)