猿问

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

我正在尝试创建一个列表理解,用于识别包含所有指定字母的所有单词。

我有一个函数,它接受单词列表和字母列表,

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


MYYA
浏览 1600回答 3
3回答

湖上湖

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

撒科打诨

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

慕尼黑的夜晚无繁华

您可以使用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
随时随地看视频慕课网APP

相关分类

Python
我要回答