栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python

给定一个列表列表

l

flat_list = [item for sublist in l for item in sublist]

意思是:

flat_list = []for sublist in l:    for item in sublist:        flat_list.append(item)

比到目前为止发布的快捷方式快。(

l
是要展平的列表。)

这是相应的功能:

flatten = lambda l: [item for sublist in l for item in sublist]

作为证据,你可以使用

timeit
标准库中的模块:

$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'10000 loops, best of 3: 143 usec per loop$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'1000 loops, best of 3: 969 usec per loop$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'reduce(lambda x,y: x+y,l)'1000 loops, best of 3: 1.1 msec per loop

说明:基于快捷方式

+
(包括中的隐含使用sum)的必要性是O(
L**2
)当存在L个子列表时-随着中间结果列表的长度越来越长,每一步都会分配一个新的中间结果列表对象,并且所有项目必须复制之前的中间结果中的结果(以及最后添加的一些新结果)。因此,为简单起见,并且不失去一般性,请说你每个都有I个项目的L个子列表:第一个I项目来回复制L-1次,第二个I项目
L-2
次,依此类推;等等。总份数是I乘以x的总和(从1到L排除在外),即
I * (L**2)/2

列表理解只生成一次列表,然后将每个项目(从其原始居住地复制到结果列表)也恰好复制一次。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371114.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号