1

与えられた文字列を取り、それらの文字でのみ作成できる与えられたリスト内のすべての単語を返すプログラムを作成する必要があります。このために、2 つの "for" ループを使用しました。1 つはリスト内の単語用で、もう 1 つは各単語の文字用です。

さて、与えられた文字だけでできる単語だけを取得するために、次の方法を使用しました。

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 は使用可能な文字を含む文字列です。これは、文字列 letras 内の文字のみで構成される lista_palabras 内のすべての単語を含むリストを返すことを期待しますが、代わりに空のリストを返します。私はどんな間違いをしていますか?前もって感謝します。

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

このようなことを意味しますか?

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') )

というか、こういうこと?

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 に答える