代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

使用一元函数序列从iterable转换项

  •  0
  • Matt Joiner  · 技术社区  · 15 年前

    我经常发现自己需要将一元函数序列应用于相同长度的序列。我的第一个想法是和你一起去 map() 但是,这只需要将单个函数应用于序列中的所有项。

    例如,在下面的代码中,我希望应用 str.upper() int 到每个表中的第二项 a . " transform “是我想要的效果的占位符。

    COLS = tuple([transform((str.upper, int), a.split(",")) for a in "pid,5 user,8 program,28 dev,10 sent,9 received,15".split()])
    

    是否有一些标准库或其他优秀的实现可以灵活地执行这样的转换?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Alex Martelli    15 年前

    那……呢

    def transform(functions, arguments):
      return [f(a) for f, a in zip(functions, arguments)]
    
        2
  •  1
  •   ghostdog74    15 年前
    >>> s="pid,5 user,8 program,28 dev,10 sent,9 received,15".split()
    >>> [ ( m.upper(),int(n)) for m, n in [i.split(",") for i in s ] ]
    [('PID', 5), ('USER', 8), ('PROGRAM', 28), ('DEV', 10), ('SENT', 9), ('RECEIVED', 15)]
    
        3
  •  1
  •   Matt Joiner    15 年前

    我目前正在使用这个:

    def transform(unaries, iterable):
        return map(lambda a, b: a(b), unaries, iterable)
    
    推荐文章