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

itertools.accumulate正在尝试用str.join替换lambda

  •  4
  • Jab  · 技术社区  · 5 年前

    我尽量不在这里使用lambda,因为它在循环中存在性能问题,我知道lambda也有用途,但我发现这个应该有更好的选择。

    这行得通,但我不喜欢那里的lambda。

    from itertools import accumulate
    
    s = "lorem ipsum dolor"
    
    print(list(accumulate(s.split(), lambda x, y: f'{x} {y}')))
    #["lorem", "lorem ipsum", "lorem ipsum dolor"]
    

    我尝试了以下方法:

    print(list(accumulate(s.split(), ' '.join)))
    

    我一定错过了一些小东西,让我觉得自己像个白痴。我认为这只是一个简单的打包元组的问题。

    1 回复  |  直到 5 年前
        1
  •  2
  •   blhsing    5 年前

    这个 str.join 方法需要一个iterable作为参数,但 accumulate 为每个迭代传递两个参数,从而产生错误。你可以使用 str.format 方法:

    print(list(accumulate(s.split(), '{} {}'.format)))