我不明白为什么这个代码不起作用,如果有人能正确解释,我会通知你的

2024-04-19 07:16:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试删除每个元素中少于4个字符的元素,它确实有效

使用while循环,但我不太明白为什么它不能使用for循环-请帮助,谢谢

words = ['elephant','cat','dog','bird','lion']

    for i in range(len(words)):
        word = words[i]
        if len(word)<4:
            word.pop(i)

2条回答

str没有.pop()方法,也不支持迭代时删除,请尝试列表理解:

words = [x for x in words if len(x) < 4]

不过,如果您希望详细,请创建新列表,向其添加项目,并将新列表的切片副本分配给原始列表:

words = ['elephant','cat','dog','bird','lion']
nw = []
for i in range(len(words)):
  word=words[i]
  if len(word)<4:
    nw.append(word)
words = nw[:]
print(words)

总的来说,您的问题来自:

word.pop(i)

您试图在字符串上使用pop,而不是在列表上。您的代码也不是“Pythonic”,因为它似乎试图使用索引值,而您可以在不使用索引值的情况下与列表交互

您的代码可以简化为一个包含所需单词的新列表

words = ['elephant','cat','dog','bird','lion']
output_words = []

for word in words:
    if len(word) < 4:
        pass
    else:
        output_words.append(word)
print(output_words)

相关问题 更多 >