Python 如果变量不在列表中==False,则返回空列表
我需要制作一个程序,该程序接受给定的字母字符串,并返回给定列表中只能使用这些字母生成的所有单词。为此,我使用了两个“For”循环,一个用于列表中的单词,另一个用于每个单词中的字母 现在,为了获得除了给定的字母以外什么都不能做的单词,我使用了以下方法:Python 如果变量不在列表中==False,则返回空列表,python,list,Python,List,我需要制作一个程序,该程序接受给定的字母字符串,并返回给定列表中只能使用这些字母生成的所有单词。为此,我使用了两个“For”循环,一个用于列表中的单词,另一个用于每个单词中的字母 现在,为了获得除了给定的字母以外什么都不能做的单词,我使用了以下方法: def combinacion_palabras(lista_palabras,letras): palabras_correctas = [] letras_correctas = [] for i in letras:
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中的字母组成,但它返回的却是一个空列表。我犯了什么错误?提前感谢。请考虑以下示例:
>>> L = ['a', 'b']
>>> 'a' not in L
False
>>> 'a' not in L == False
False
>>> ('a' not in L) == False
True
优先顺序使L==False
优先
如果您想确定列表中是否有一个项目,只需在letras_correctas中选择c:您的意思是这样的吗
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') )
如果我给了你
c
,o
,f
,e
,你能把coffee
这个词做出来吗?你的算法能解释吗?你不需要字母循环。直接使用letras
就可以了……我已经解决了这个问题,尽管我选择了不同的路线。无论如何,谢谢你们的帮助。如果有人好奇的话,代码如下:def combinacion_palabras(lista_palabras,letras):palabras_correctas=[]letras_correctas=list(letras)for p in lista_palabras:k=''for c in p:If c in letras_correctas:k+=c If len(k)=len(p):palabras_correctas.append(p)return palabras_correctas
值得一提的是,即使使用此修复,算法仍然会出错(它将返回一个列表,每个单词重复的次数与它的有效字母数相同)。理想的解决方案可能需要调用any
或all
,调用中包含生成器表达式,但这对于提问者的家庭作业来说可能太高级了。用简单的循环来解决它是可能的,尽管不是很Python(尽管可能值得学习,因为大多数其他语言需要比Python更难看的东西)。