博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将大数组里面的小数组平行展开的实现(Making a flat list out of list of lists in Python)...
阅读量:6733 次
发布时间:2019-06-25

本文共 1464 字,大约阅读时间需要 4 分钟。

今天在生成数据的时候遇到了这个需求,其实写一个for循环可以很容易解决这个问题,但是无论是性能还是酷炫程度上都不行 所以顺手搜索了一下。

例子是将

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]

变成

[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

plan1: 使用列表推导式

print [item for i in l for item in i]

plan2: 使用reduce

print reduce(lambda x, y: x + y, l)print reduce(operator.concat, l)

plan3: 使用itertool

print list(itertools.chain.from_iterable(l))

plan4: 使用sum

print sum(l, [])

那么,哪种方法最快呢? timeit!

import timeitprint timeit.timeit('reduce(lambda x, y: x + y, l)', setup='l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]', number=10000)print timeit.timeit('reduce(operator.concat, l)', setup='import operator;'                                                        'l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]', number=10000)print timeit.timeit('[item for i in l for item in i]', setup='l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]', number=10000)print timeit.timeit('list(itertools.chain.from_iterable(l))', setup='import itertools;'                                                                    'l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]', number=10000)print timeit.timeit('sum(l, [])', setup='l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]', number=10000)

output:

0.01295900344850.009491920471190.01040387153630.01228213310240.0097348690033

可以看到,速度其实都差不多,在一个数量级上,但是第二个操作一般会更快 也就是使用operator的operator.concat

 

 

Reference:

http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python

http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python

转载地址:http://oafqo.baihongyu.com/

你可能感兴趣的文章
GSM Hacking Part① :使用SDR扫描嗅探GSM网络
查看>>
安装完eclipse,dbwear后,需要在他们解压文件.ini下加上你liux的jdk的安装路径,才能正常使用...
查看>>
流量排名前一千万网站,三分之一使用 WordPress
查看>>
聊聊并发——深入分析ConcurrentHashMap
查看>>
Unable to find the Xcode project `.xcodeproj` for the target `Pods`
查看>>
【工具】批量删除binlog 的脚本
查看>>
Matlab与微积分计算
查看>>
SAP MM MRBL 产生的122物料凭证号里不挂DB号码
查看>>
阿里云发布超级智能ET大脑 成全球产业AI拓荒者
查看>>
Matlab实现求a到b被c整除的个数
查看>>
测试环境的迁移式升级和数据整合
查看>>
最近的几个技术问题总结和答疑(三)
查看>>
浅析关键词密度你真的控制好了吗
查看>>
博客链接—RAC
查看>>
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
查看>>
Commons-Collections 集合工具类的使用
查看>>
成为优秀高级程序员的10个要点(转)
查看>>
org.springframework.web.servlet.PageNotFound
查看>>
阿里安全资深专家谢君:如何黑掉无人机
查看>>
迅雷狂跌无止境:下载神器究竟怎么了?
查看>>