首页 > 解决方案 > 意外的输出试图过滤python中的列表

问题描述

假设有一个单词列表,我想删除所有包含特定字母的单词。

这是我尝试过的

Wordlist = ["abcd","cdef","efgh","ghij","ijkl","klmn","nope","wow"]
BadLetters = "d"


for word in Wordlist:
    for BadLetter in BadLetters:
        if (word.count(BadLetter) > 0):
            Wordlist.remove(word)

print(Wordlist)

预期输出:删除了“abcd”和“cdef” ['efgh', 'ghij', 'ijkl', 'klmn', 'nope', 'wow']

实际输出:仅删除了“abcd” ['cdef', 'efgh', 'ghij', 'ijkl', 'klmn', 'nope', 'wow']

什么可能导致问题,我该如何解决?

标签: pythonlistloopsfor-loop

解决方案


在迭代列表时从列表中删除元素不是一个好主意。

尝试这个:

Wordlist = ["abcd","cdef","efgh","ghij","ijkl","klmn","nope","wow"]
BadLetters = "d"

Wordlist_new = []
for word in Wordlist:
    for BadLetter in BadLetters:
        if (word.count(BadLetter) > 0):
            pass # Wordlist.remove(word)
        else:
            Wordlist_new.append(word)

print(Wordlist)
print(Wordlist_new)

推荐阅读