代码之家  ›  专栏  ›  技术社区  ›  Ari

Python filter函数-如果列表中的单词以特定字符开头[重复]

  •  0
  • Ari  · 技术社区  · 6 年前

    seq = ['soup','dog','salad','cat','great', 'salami']
    

    我正在尝试创建一个新列表,其中只包含起始字符为“s”的单词。

    def check_letter(input_list):
        if input_list[0].lower() == 's':
            return True
        else:
            return False
    
    filtered_list = filter(check_letter, seq)
    print(filtered_list)
    

    我得到的结果是:

    <filter object at 0x10e3f6f98>
    

    我期望的是:

    ['soup', 'salad', 'salami']
    

    提前谢谢!

    2 回复  |  直到 6 年前
        1
  •  2
  •   Chetan Ameta    6 年前

    它返回python3中的generator对象,因此要么对其进行迭代,要么使用内置列表函数获取列表:

    print(list(filtered_list))
    

    输出:

    ['soup', 'salad', 'salami']
    
        2
  •  0
  •   Praveen    6 年前

    In [1]: seq = ['soup','dog','salad','cat','great', 'salami']
    
    In [2]: out = [x for x in seq if x.lower().startswith('s')]
    
    In [3]: out
    Out[3]: ['soup', 'salad', 'salami']