1

我需要制作一个程序,它接受给定的字母字符串并返回给定列表中只能用这些字母组成的所有单词。为此,我使用了两个“for”循环,一个用于列表中的单词,一个用于每个单词中的字母。

现在,为了只获得只能由给定字母组成的单词,我使用了以下方法:

def combinacion_palabras(lista_palabras,letras):
    palabras_correctas = []
    letras_correctas = []
    for i in letras:
        letras_correctas.append(i)
    for p in lista_palabras:
        for c in p:
            if c not in letras_correctas == False:
                palabras_correctas.append(p)

    return palabras_correctas

其中 lista_palabras 是给定单词的列表,而 letras 是带有可用字母的字符串。我希望这会返回一个列表,其中包含 lista_palabras 中的所有单词,这些单词仅由字符串 letras 中的字母组成,但它返回的是一个空列表。我犯了什么错误?提前致谢。

4

2 回答 2

2

考虑这个例子:

>>> L = ['a', 'b']
>>> 'a' not in L
False
>>> 'a' not in L == False
False
>>> ('a' not in L) == False
True

优先顺序使L == False先行。

如果要确定列表中的某个项目,只需执行if c in letras_correctas:

于 2013-10-04T03:41:16.847 回答
0

Do you mean something like this?

def combinacion_palabras(lista_palabras, letras):
    return [palabra for palabra in lista_palabras if set(palabra) <= set(letras) ]

palabras = ['tomo', 'tomas', 'toma', 'tomamos', 'toman', 'mata']

print(combinacion_palabras (palabras, 'tom') )
print(combinacion_palabras (palabras, 'atoms') )
print(combinacion_palabras (palabras, 'tma') )

Or rather something like this?

def combinacion_palabras(list_palabras, letras):
    return [palabra for palabra in list_palabras if sorted(palabra) == sorted(letras) ]

palabras = ['tomo', 'tomas', 'toma', 'tomamos', 'toman', 'mata']

print(combinacion_palabras (palabras, 'otom') )
print(combinacion_palabras (palabras, 'atoms') )
print(combinacion_palabras (palabras, 'tama') )
于 2013-10-04T05:12:21.563 回答