压缩并在Python中的值列表上应用函数列表

发布于 2021-01-29 17:23:30

是否有惯用和/或精美的Python用于在值列表上压缩 和应用 功能列表?

例如,假设您有一个功能列表:

functions = [int, unicode, float, lambda x: '~' + x + '~']

以及值列表:

values = ['33', '\xc3\xa4', '3.14', 'flange']

有没有一种方法可以将ith函数应用于ith值并返回转换后的值的相同长度的列表,同时又避免了这种难看的列表理解?

[functions[i](values[i]) for i in range(len(functions))] # <- ugly

我想要的是类似zip()+
map()zipmap()!)的函数列表和值列表,并将这些函数应用于它们的配对值。我以为itertools可能提供了一些相关的东西,但是类似imap和的函数starmap用于将一个函数映射到一个可迭代对象上,而不是将一个可迭代函数映射到另一个可迭代对象上。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这些解决方案似乎过于复杂: map已经压缩了其参数:

    map(lambda x,y:x(y), functions, values)
    

    或者,如果您喜欢迭代器版本:

    from itertools import imap
    imap(lambda x,y:x(y), functions, values)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看