【问题标题】:Python filter function - if a word in a list starts with a specific character [duplicate]Python过滤器功能-如果列表中的单词以特定字符开头[重复]
【发布时间】:2019-01-26 04:36:24
【问题描述】:

我的清单:

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

提前致谢!

【问题讨论】:

  • 试试这个 print(list(filtered_list))
  • python 3 中的过滤器返回一个生成器。您需要对其进行迭代以获取列表(或将其转换为列表...这将对其进行迭代)
  • check_letter 的简写形式:def check_letter(word): return word[0].lower() == 's'

标签: python list function


【解决方案1】:

它在python3中返回生成器对象,所以要么迭代它,要么使用内置列表函数获取列表:

print(list(filtered_list))

Outpot:

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

【讨论】:

    【解决方案2】:

    你也可以使用列表推导。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-18
      • 2019-07-16
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多