【问题标题】:How to filter a string list containing specific characters in python如何在python中过滤包含特定字符的字符串列表
【发布时间】:2022-02-09 15:08:23
【问题描述】:

我正在尝试编写一个按字母过滤单词列表的程序。目的是获得包含任何给定字母而没有其他字母的单词。我试图用列表理解中的 all() 函数来做到这一点。这并没有按我的预期工作,因为它只是过滤包含这组字母的单词,但不排除字母表的其余部分:

字母 = ['R', 'E', 'T', 'O', 'P', 'A']

letters = ['R', 'E', 'T', 'O', 'P', 'A']

final_list = [word for word in dictionary if all(word for letter in letters if letter in word)]

有人知道怎么做吗?

提前谢谢你!

【问题讨论】:

    标签: python string list character filtering


    【解决方案1】:

    你可以用这种方式解决问题。

    letters = ['R', 'E', 'T', 'O', 'P', 'A']
    words_list = ["TOP", "CUT", "REPORT", "GOOD"]
    
    final_list = [word for word in words_list if set(word).issubset(set(letters))]
    print(final_list)
    

    在这段代码中,我们检查words_list 中的每个word 是否由letters_list 中的字母组成。为此,我们使用issubset 方法。

    set(word).issubset(set(letters))这部分代码是return一个布尔值。当且仅当该布尔值为 True 时,我们会将 word 包含到 final_list

    【讨论】:

      【解决方案2】:

      你快到了,你只需要稍微调整一下all 条件。

      all(word for letter in letters if letter in word) -> 只要任何wordTrue,这将返回True,情况总是如此。

      我们要检查的是“单词中的所有字母都是字母的一部分”,如果letter,下面代码中的letter in letters 将返回True/Falseletters。所以对于all,如果所有letter in letters 检查都返回True,它只会返回True

      letters = ['R', 'E', 'T', 'O', 'P', 'A']
      dictionary = ['REPORT', 'INVALID', 'ROPE']
      final_list = [word for word in dictionary if all(letter in letters for letter in word)]
      print(final_list)
      

      输出 -

      ['REPORT', 'ROPE']
      

      【讨论】:

        【解决方案3】:

        可以在python中使用filter()方法

        letters = ['R', 'E', 'T', 'O', 'P', 'A']
        my_lis = ['jake','jill','tim','vim'] 
        
        def foo(x):
          for words in x:
            for letter in words:
                print(letter)
                if letter in letters:
                    return True
                else:
                    return False
        
        final = filter(foo,my_lis)
        
        for x in final:
          print(x)
        

        【讨论】:

          【解决方案4】:

          您可以使用 python filter() 方法过滤您的列表。

          【讨论】:

            猜你喜欢
            • 2014-05-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-12-05
            • 2019-02-21
            • 2020-06-14
            相关资源
            最近更新 更多