【问题标题】:filtering a list of strings using lambda使用 lambda 过滤字符串列表
【发布时间】:2018-11-29 07:21:19
【问题描述】:

我有一个类似的列表,

old_list=["a_apple","b_banana","c_cherry"]

我想使用 lambda 获取新列表。

new_list=["apple","banana","cherry"]

我试过了,但它没有像我预期的那样工作。这是我写的。

new_list=filter(lambda x: x.split("_")[1], old_list)

有什么问题?

【问题讨论】:

  • 尝试使用地图而不是过滤器

标签: python python-3.x list lambda


【解决方案1】:

试试这个:

Python-2

In [978]: old_list=["a_apple","b_banana","c_cherry"]

In [980]: new_list = map(lambda x: x.split("_")[1], old_list)

In [981]: new_list
Out[981]: ['apple', 'banana', 'cherry']

Python-3

In [4]: new_list = list(map(lambda x: x.split("_")[1], old_list))

In [5]: new_list
Out[5]: ['apple', 'banana', 'cherry']

【讨论】:

    【解决方案2】:

    您可以使用lambda 函数map 列表:

    list(map(lambda s: s.split('_')[1], old_list))
    

    这会返回:

    ['apple', 'banana', 'cherry']
    

    【讨论】:

      【解决方案3】:

      使用list comprehensions

      lst=["a_apple","b_banana","c_cherry"]
      [i.split("_")[1] for i in lst]
      

      输出:

      ['apple', 'banana', 'cherry']
      

      【讨论】:

        【解决方案4】:

        通过使用 lambda 和 map:

        li=["a_apple","b_banana","c_cherry"]
        
        new_li = map(lambda x: x.split('_')[1], li)
        print (list(new_li))
        # ['apple', 'banana', 'cherry']
        

        【讨论】:

          猜你喜欢
          • 2017-05-10
          • 1970-01-01
          • 1970-01-01
          • 2022-01-16
          • 2019-11-18
          • 1970-01-01
          • 2020-10-30
          • 2022-06-10
          • 1970-01-01
          相关资源
          最近更新 更多