在python3中,我有一个返回可变大小列表的函数
我想在列表上运行这个函数,并将结果连接起来。例如::
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函数?
发布于 2018-12-04 04:10:20
你得到的东西看起来不错。我只需要剔除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))))
发布于 2018-12-11 23:45:28
由于问题被标记为python-3.x,下面是使用map
进行投影和使用itertools.chain.from_iterable
进行展平的一行代码:
import itertools
result = list(itertools.chain.from_iterable(map(the_func, range(10))))
print(result)
这比使用1mil的嵌套列表理解版本(3.3秒vs.4.1秒)快了大约1秒。迭代。
https://stackoverflow.com/questions/53600095
复制相似问题