【问题标题】:Nested maps in Python 3Python 3 中的嵌套地图
【发布时间】:2015-09-06 06:51:30
【问题描述】:

我想将我的列表 list = [" a , 1 ", " b , 2 "] 转换为嵌套列表 [["a","1"],["b","2"]]

以下作品:

f1_a = map(lambda x :[t.strip() for t in x.split(',',1)],list)

但这不适用于 Python 3(它适用于 Python 2.7!):

f1_b = map(lambda x :map(lambda t:t.strip(),x.split(',',1)),list)

这是为什么呢?

有没有比f1_4更简洁的方式来实现我想要的?

【问题讨论】:

    标签: python python-3.x lambda


    【解决方案1】:

    Python 3 的 map 返回一个 map 对象,您需要将其显式转换为列表:

    f1_b = list(map(lambda x: list(map(lambda t: t.strip(), x.split(',', 1))), lst))
    

    尽管在大多数情况下,您应该更喜欢列表推导而不是 map 调用:

    f1_a = [[t.strip() for t in x.split(',', 1)] for x in lst]
    

    【讨论】:

    • 你为什么建议“x.replace”而不是“x.strip”?
    • @JohnPrawyn:摆脱一个循环:[t.strip() for t in x.split(',', 1)] 将变为x.replace(' ', '').split(',')。另一方面,现在我看到该建议仅限于问题中的数据,并且在更复杂的示例中会失败。我从我的答案中删除了它。
    猜你喜欢
    • 2017-09-21
    • 1970-01-01
    • 2017-11-02
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多