首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有函数的Python映射,该函数返回可变数量的值

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

Stack Overflow用户
提问于 2018-12-04 02:54:33
回答 2查看 90关注 0票数 0

在python3中,我有一个返回可变大小列表的函数

我想在列表上运行这个函数,并将结果连接起来。例如::

代码语言:javascript
复制
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函数?

EN

回答 2

Stack Overflow用户

发布于 2018-12-04 04:10:20

你得到的东西看起来不错。我只需要剔除flatten并使用内置的map

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-12-11 23:45:28

由于问题被标记为python-3.x,下面是使用map进行投影和使用itertools.chain.from_iterable进行展平的一行代码:

代码语言:javascript
复制
import itertools
result = list(itertools.chain.from_iterable(map(the_func, range(10))))
print(result)

这比使用1mil的嵌套列表理解版本(3.3秒vs.4.1秒)快了大约1秒。迭代。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53600095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档