使用一系列一元函数将可迭代项转换为可迭代项

发布于 2024-08-20 20:58:49 字数 400 浏览 10 评论 0原文

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

例如,在下面的代码中,我希望将 str.upper() 应用于每个 aint 应用于第二项>。 “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()])

是否有一些标准库或其他好的实现可以巧妙地执行这样的转换?

I frequently find myself needing to apply a sequence of unary functions to a sequence of of the same length. My first thought is to go with map(), however this only takes a single function to be applied to all items in the sequence.

In the following code for example, I wish to apply str.upper() to the first item, and int to the second item in each a. "transform" is a place holder for the effect I'm after.

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

Is there some standard library, or other nice implementation that can perform a transformation such as this neatly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

云巢 2024-08-27 20:58:49

那……呢:

def transform(functions, arguments):
  return [f(a) for f, a in zip(functions, arguments)]

What about...:

def transform(functions, arguments):
  return [f(a) for f, a in zip(functions, arguments)]
柳絮泡泡 2024-08-27 20:58:49
>>> 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)]
>>> 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)]
冷…雨湿花 2024-08-27 20:58:49

我目前正在使用这个:

def transform(unaries, iterable):
    return map(lambda a, b: a(b), unaries, iterable)

I'm currently using this:

def transform(unaries, iterable):
    return map(lambda a, b: a(b), unaries, iterable)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文