[英]Python map with function that returns variable number of values
在python 3中,我有一个返回可变大小列表的函数
我想在列表上运行此功能并连接结果。 例如::
def the_func(x):
return [x]*x
def mapvar(f,v):
ans=[]
for x in v:
ans.extend(f(x))
return ans
print (mapvar(the_func,range(10)))
在python中有最佳做法吗? 是否有标准的mapvar函数?
你所拥有的看起来不错。 我只是考虑将其flatten
并使用内置map
。
def the_func(x):
return [x] * x
def flatten(lst):
return [x
for subl in lst
for x in subl]
print(flatten(map(the_func, range(10))))
由于该问题被标记为[python-3.x],因此这是使用map
进行投影和使用itertools.chain.from_iterable
进行展平的单行代码:
import itertools
result = list(itertools.chain.from_iterable(map(the_func, range(10))))
print(result)
这比嵌套列表理解版本平均要快1秒(3.3秒vs. 4.1秒),平均使用时间为100万。 迭代。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.