繁体   English   中英

带有返回可变数量值的函数的Python映射

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM