python 列表降维_如何给列表降维?sum()函数的妙用

本文探讨了如何优雅地将二维列表降维为一维列表,介绍了三种方法:粗暴拼接法、列表推导式和sum()函数的巧妙应用。重点解析了sum()函数的工作原理,以及它在列表求和以外的不寻常用法,并引发对Python进阶知识的思考。
摘要由CSDN通过智能技术生成

上个月,学习群里的 S 同学问了个题目,大意可理解为列表降维 ,例子如下:

oldlist = [[1, 2, 3], [4, 5]]

# 想得到结果:

newlist = [1, 2, 3, 4, 5]

原始数据是一个二维列表,目的是获取该列表中所有元素的具体值。从抽象一点的角度来理解,也可看作是列表解压或者列表降维。

这个问题并不难,但是,怎么写才比较优雅呢?

# 方法一,粗暴拼接法:

newlist = oldlist[0] + oldlist[1]

这种方法简单粗暴,需要拼接什么内容,就取出来直接拼接。然而,如果原列表有很多子列表,则这个方法就会变得繁琐了。

我们把原问题升级一下:一个二维列表包含 n 个一维列表元素,如何优雅地把这些子列表拼成一个新的一维列表?

方法一的做法需要写 n 个对象,以及 n - 1 次拼接操作。当然不可行。下面看看方法二:

# 方法二,列表推导式:

newlist = [i for j in range(len(oldlist)) for i in oldlist[j]]

这个表达式中出现了两个 for 语句,在第一个 for 语句中,我们先取出原列表的长度,然后构造 range 对象,此时 j 的取值范围是 [0, n-1] 的闭区间。

在第二个 for 语句中,oldlist[j] 指的正是原列表的第 j 个子列表,for i in oldlist[j] 则会遍历取出 j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值