是否有惯用和/或优雅的Python用于压缩和在值列表中应用函数列表?
例如,假设您有一个函数列表:
functions = [int, unicode, float, lambda x: '~' + x + '~']
Run Code Online (Sandbox Code Playgroud)
和值列表:
values = ['33', '\xc3\xa4', '3.14', 'flange']
Run Code Online (Sandbox Code Playgroud)
有没有办法将第i个函数应用于第i个值并返回相同长度的转换值的列表,同时避免这种丑陋的列表理解?
[functions[i](values[i]) for i in range(len(functions))] # <- ugly
Run Code Online (Sandbox Code Playgroud)
我想要的是zip()+ map()(zipmap()!)带有值列表的函数列表,并将函数应用于它们的配对值.我认为itertools可能提供一些相关的东西,但函数类似于imap并且starmap用于将单个函数映射到可迭代的,而不是可迭代的函数而不是另一个迭代.
Ign*_*ams 23
[x(y) for x, y in zip(functions, values)]
Run Code Online (Sandbox Code Playgroud)
Ben*_*son 22
这些解决方案似乎过于复杂: map已经拉开了它的论点:
map(lambda x,y:x(y), functions, values)
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢迭代器版本:
from itertools import imap
imap(lambda x,y:x(y), functions, values)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4496 次 |
| 最近记录: |