在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函数?
答案 0 :(得分:1)
您所拥有的看起来不错。我只考虑使用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))))
答案 1 :(得分:1)
由于该问题被标记为[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万。迭代。