为了账号安全,请及时绑定邮箱和手机立即绑定

使用列表理解来识别包含所有指定字母的单词列表中的元素?

使用列表理解来识别包含所有指定字母的单词列表中的元素?

MYYA 2023-08-22 16:10:46
我正在尝试创建一个列表理解,用于识别包含所有指定字母的所有单词。我有一个函数,它接受单词列表和字母列表,def words_with_letters(words, letters):     words_letters = list(letters)         #This would return ['t', 'e', 's', 't']然后我想做的是识别我的单词列表(单词变量)中包含字母变量(在本例中为测试)中的字母的所有单词。现在我有以下代码,    test = [word for word in words if (letter for letter in words_letters) in word]我所说的是循环遍历单词的每个元素,如果指定的每个字母 (words_letters) 都在该单词中,则返回它们。不幸的是,我认为我需要稍微调整一下,但不明白我哪里出了问题。我相信它在(words_letters 中的字母对字母)部分中,我试图循环遍历所需的每个字母,words_with_letters(words, 'test')
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

all您可能想以这种方式使用布尔表达式[word for word in words if all(letter in word for letter in words_letters)],但它会错过字母是否出现一次或多次。



查看完整回答
反对 回复 2023-08-22
?
撒科打诨

TA贡献1934条经验 获得超2个赞

all()您可以在列表理解中使用内置 函数。


def words_with_letters(words, letters):

    return [word for word in words if all(letter in word for letter in letters)]


words = ['word1', 'wtoersdt2', 'word3']


print(words_with_letters(words, 'test'))  # -> ['wtoersdt2']


查看完整回答
反对 回复 2023-08-22
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可以使用set差异来list_comprehension查看如下所示的匹配


words =  ["test_word1","tst_word2","word3_test","word4"]

letters = ['t','e','s','t']


match= [word for word in words if len(list(set(letters)-set(word)))==0]

print(match)

#will return ['test_word1', 'word3_test'] only


查看完整回答
反对 回复 2023-08-22
  • 3 回答
  • 0 关注
  • 1594 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信