我不明白为什么这个 python 代码不起作用

时间:2021-03-15 10:37:51

标签: python list

基本上我想在python中制作一个程序,给定一个单词列表和一个字母列表,它将打印出一个列表,其中仅包含字母列表中不包含任何字母的单词。

>
lista = ["computador","comida","atum","pai","porco","amigo","bloco","carro","banana","janela","calculadora","caneca","prato","livro","jogo","fabrico","cruz","pedra","ar","vento"]
letras_prib = ["a","b"]
for palavra in lista:
    for letra in letras_prib:
        if letra in palavra:
            listafinal = lista.remove(palavra)
print(listafinal)

在这里你可以看到单词列表是:

lista = ["computador","comida","atum","pai","porco","amigo","bloco","carro","banana","janela","calculadora","caneca","prato","livro","jogo","fabrico","cruz","pedra","ar","vento"]

字母列表是:

["a","b"]

我的问题是,当我运行这个确切的程序时,它只是打印出“无”。根据我的理解,它应该打印出不包含字母“a”或“b”的每个单词。 我真的需要帮助,因为我已经搜索了很多,但仍然不知道如何解决这个问题。 PS:如果您理解一些葡萄牙语单词有困难;

palavra = 字

lista = 列表

listafinal = 决赛名单

letra = 字母

letras_prib = 禁止使用的字母。

是的,列表中有不包含字母“a”或字母“b”的单词,例如“porco”。

2 个答案:

答案 0 :(得分:1)

.remove 不会返回删除项目的新列表,而是原地删除它并返回 none

相反,将最终列表作为原始列表的副本开始,然后直接删除而不分配给变量

listafinal = lista[:]  # When declaring listafinal
...
listafinal.remove(palavra)  # Where you're currently removing

答案 1 :(得分:0)

您可以使用 del 从列表中删除元素。 并且在迭代列表时从最后一个迭代,因此从最后一个删除元素将删除所有元素。 检查以下代码:

lista = ["computador", "comida", "atum", "pai", "porco", "amigo", "bloco", "carro", "banana", "janela", "calculadora",
         "caneca", "prato", "livro", "jogo", "fabrico", "cruz", "pedra", "ar", "vento"]
letras_prib = ["a", "b"]

for palavra in lista[::-1]:
    for letra in letras_prib:
        if letra in palavra and palavra in lista:
            del lista[lista.index(palavra)]
print(lista)