在Python中对iterable执行简单的转换通常是通过列表理解来实现的:
y = [f(arg) for arg in args]
其中f
是simple statement,或者是函数{
Guido favors list comprehensions超过map(lambda x:..., args)
,并且确实列出了对map
或{
但是,我不清楚我应该如何处理以下问题:
解决这类问题最惯用的方法是什么? 在我参与的Python项目中,我看到并尝试了一些事情:
显而易见的方法是预先声明输出和循环:
def transform(...):
...
y = []
for arg in args:
first_statement
second_statement
...
y.append(statement)
评论:
y
必须与args
的长度相同)另一种选择是将逻辑封装在嵌套函数中,然后使用映射或列表理解来调用它:
def transform(...):
...
def anonymous(arg):
first_statement
second_statement
...
return statement
y = map(anonymous, args)
# y = [anonymous(arg) for arg in args]
评论:
将内部函数移到外部范围可以解决其中的一些问题,但会引入更多:
def _anonymous(arg):
first_statement
second_statement
...
return statement
def transform(...):
...
y = map(_anonymous, args)
评论:
map
)或partial
我很矛盾。当你需要做一个非平凡的一次性地图时,你如何解决问题?在
目前没有回答
相关问题 更多 >
编程相关推荐