python中把嵌套的列表合并成一个列表方法总结
作者:起不好名字就不起了 时间:2022-06-07 04:11:22
方法一:巧用sum函数
将list列表与一个空列表相加,就能把嵌套列表合并成一个
a=[[1],[2],[3],[4],[5]]
merge=sum(a,[])
print('sum result:',merge)
结果:
sum result: [1, 2, 3, 4, 5]
方法二:使用itertools 模块的链式拼接
itertools.chain()与itertools.chain.from_iterable()函数都可以拼接可迭代对象中的所有元素,将元素串联后创建一个新的迭代器。区别是前者可用于拼接多个嵌套列表,后者拼接单个嵌套列表,示例如下。
使用itertools.chain():
import itertools
a='abc'
b='def'
merge=itertools.chain(a,b)
result = list(merge)
print('itertools.chain result:',result)
结果:
itertools.chain result: ['a', 'b', 'c', 'd', 'e', 'f']
使用itertools.chain.from_iterable():
import itertools
a=[[1],[2],[3],[4],[5]]
merge=itertools.chain.from_iterable(a)
result = list(merge)
print('itertools.chain.from_iterable result:',result)
结果:
itertools.chain.from_iterable result: [1, 2, 3, 4, 5]
方法三:迭代判断条件
遍历list内的每一个元素,如果该元素不是列表或元组就加到生成器里,如果是可迭代对象就继续递归调用,直到把所有子列表都打散,最终返回一个大列表。
def flat(l):
for k in l:
if not isinstance(k, (list, tuple)):
yield k
else:
yield from flat(k)
a=[[1],[2],[3],[4],[5]]
print ('flat result:',list(flat(a)))
结果:
flat result: [1, 2, 3, 4, 5]
方法四:简单粗暴的字符串替代
直接把整个list转换成字符串,然后替换掉边框,最后通过eval函数再转回list格式
a=[[1],[2],[3],[4],[5],[['m'],['n']]]
result = eval('[%s]'%repr(a).replace('[', '').replace(']', ''))
print('eval result:',result)
结果:
eval result: [1, 2, 3, 4, 5, 'm', 'n']
附加一道有意思的面试题
list_info = [1,2,3,4,5]
print(list_info[10:])
会输出什么?为什么?
1)导致 IndexError
2)输出[1,2,3,4,5]
3)编译错误
4)输出[]
总结
来源:https://blog.csdn.net/qq_38017966/article/details/119272263
标签:python,嵌套列表,合并
0
投稿
猜你喜欢
matplotlib绘制两点间连线的几种方法实现
2021-07-27 09:02:24
SQL 无法装载DLL Microsoft原因(无法修改sa密码)
2024-01-19 21:04:57
Python urllib3软件包的使用说明
2023-08-04 13:51:31
Can't connect to MySQL server on 'localhost' (10048)问题解决方法
2024-01-19 06:58:47
JavaScript中document.forms[0]与getElementByName区别
2024-04-17 09:55:58
Django在admin后台集成TinyMCE富文本编辑器的例子
2021-10-03 15:43:12
Go语言atomic.Value如何不加锁保证数据线程安全?
2024-04-25 13:16:52
python数字图像处理之对比度与亮度调整示例
2021-02-13 19:33:19
vue3中使用Apache ECharts的详细方法
2024-04-26 17:41:01
python使用matplotlib:subplot绘制多个子图的示例
2021-01-26 18:13:08
Python PO设计模式的具体使用
2023-10-31 18:47:38
Python 实现大整数乘法算法的示例代码
2022-07-07 02:57:54
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2023-05-17 12:07:07
在Python中使用mechanize模块模拟浏览器功能
2022-04-12 10:13:56
MySQL 开启慢查询日志的方法
2024-01-20 13:41:05
详解oracle mysql 中的“不等于“ <> != ^= is not
2024-01-25 03:35:08
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2023-03-30 12:38:59
交互设计规范原则
2011-09-30 11:52:12
关于JS中变量的显式声明和隐式声明
2008-10-06 13:22:00
Python中摘要算法MD5,SHA1简介及应用实例代码
2023-12-12 00:36:41