首页 > 编程语言 >Python多维列表(元组)合并成一维形式

Python多维列表(元组)合并成一维形式

时间:2024-07-04 16:22:40浏览次数:1  
标签:Python reduce list sublist 元组 itertools input 多维 output

一.需求

原格式:

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

目标格式:

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

二.方法

1.sum函数合并

input=[[1,2,3],[4,5,6],[7,8,9]]
output=sum(input,[])
print(output)

#结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]

这个看上去很简洁,不过有类似字符串累加的性能陷阱。

2.reduce函数

from functools import reduce

input=[[1,2,3],[4,5,6],[7,8,9]]
output=reduce(list.__add__, input)
print(output)

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

做序列的累加操作。也是有累加的性能陷阱。

3.列表推导式

input=[[1,2,3],[4,5,6],[7,8,9]]
output=[item for sublist in input for item in sublist]
print(output)

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

列表推导式,看着有些长,而且还要for循环两次,变成一行理解需要费劲一些,没有那么直观

4.itertools 类库

import itertools
input=[[1,2,3],[4,5,6],[7,8,9]]
ouput=list(itertools.chain(*input))
print(ouput)

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

三.性能对比

#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078
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: 51.2 usec per loop

python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'reduce(list.__add__,l)'
1000 loops, best of 3: 572 usec per loop
 
python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'
1000 loops, best of 3: 545 usec per loop

python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99; import itertools;' 'list(itertools.chain(*l))'
10000 loops, best of 3: 35.1 usec per loop

标签:Python,reduce,list,sublist,元组,itertools,input,多维,output
From: https://www.cnblogs.com/djdjdj123/p/18284079

相关文章

  • Python Linux源码安装
    保留服务器原Python安装版本,安装指定需求版本Python1.查看当前系统版本[root@iZbp1ac4pv22mg092qi2zfZ~]#cat/etc/system-releaseCentOSLinuxrelease7.9.2009(Core)2.查看已安装Python路径及版本[root@iZbp1ac4pv22mg092qi2zfZ~]#whichpython/usr/bin/python[ro......
  • 有趣的Python库——CowSay
    有趣的Python库——CowSay安装:pipinstallcowsay命令式使用:cowsay-cpig-t你好,我是一只猪哦!输出:__________|你好,我是一只猪哦!|==========\\\\,.(_|,......
  • 40个Python函数-助你快速成为编程高手
    40个Python函数-助你快速成为编程高手1、「len()」-返回对象的长度或项目数。length=len("Hello,World!")#返回132、「str()」-将对象转换成字符串。string_representation=str(123)#返回'123'3、「type()」-返回对象的类型。type_of_var=type......
  • 第15届蓝桥杯Python青少组选拔赛(STEMA)2023年8月真题-附答案
    第15届蓝桥杯Python青少组选拔赛(STEMA)2023年8月真题题目总数:11总分数:400真题下载点我百度网盘......
  • xalpha-一个可以预测股票,基金走势的Python库
    xalpha-一个可以预测股票,基金走势的Python库xalpha是什么xalpha是一个开源的Python库,主要用于量化投资和数据分析。它集成了大量的金融数据接口,提供了丰富的API用于股票、期货、外汇等金融数据的获取和处理。xalpha的设计简洁明了,易于上手,让初中级程序员也能轻松地进行金......
  • ChatterBot-基于Python库的聊天机器人框架
    ChatterBot-基于Python库的聊天机器人框架ChatterBot是什么ChatterBot是一个基于Python的聊天机器人框架,它可以帮助我们快速地创建各种聊天机器人。它使用了NLP(自然语言处理)技术,可以理解和回答用户的问题。ChatterBot的设计目标是易于使用,灵活,支持多种输出格式,如文本、语......
  • 地表最强的Python开源库,可让微信秒变助手的-itchat
    地表最强的Python开源库,可让微信秒变助手的-itchatitchat是什么itchat是一个开源的Python库,主要用于微信个人号的接口。通过这个库,开发者可以实现自动回复、模拟人工操作、实现机器人等功能。itchat的出现极大地降低了微信个人号开发的门槛,让更多的开发者能够轻松地实现......
  • 钉钉应用开发-Python操作钉钉文档(excel版)
    钉钉应用开发-Python操作钉钉文档一:服务端SDK下载服务端SDK下载-钉钉开放平台(dingtalk.com)pip3installalibabacloud_dingtalk二:钉钉开放平台开发者后台(dingtalk.com)基础概念-钉钉开放平台(dingtalk.com)2.1:创建应用2.2:获取应用基本信息2.3:权限申请,获取......
  • Python之Web框架Django
    官网https://www.djangoproject.com/download/安装djangopip安装django#查看python版本,版本显示如下Python3.12.1python3-V#安装djangopython3-mpipinstallDjango==5.0.6#查看django版本python3-mdjango--version通过Django包离线安装下载Django项目并......
  • python-字典
    为什么需要字典字典的定义字典数据的获取字典的嵌套嵌套字典的内容获取字典的注意事项:字典的常用操作新增元素更新元素删除元素清空字典汇总字典的特点......