python——一行代码将列表里的元素去重

     今天胡哥又问了我一个问题:用一行代码如何把列表里的元素去重。

比如:

a = [[1, 2, 3], [2, 3, 4], [4, 5], [1, 2, 3]]
需要的效果是最后得到1,2,3,4,5。

我脑子里第一闪过的就是用set。

随后试了一下,使用双重列表推导式加set,可以轻松解决。

set([val for i in a for val in i])
不了解双重列表推导的同学,可以看我的上一篇博客:双重列表推导式

解决问题后再思考一下,效率是否足够高?

使用双重列表推导式很显然需要循环列表里的每一个元素,最后才统一去重,如果这个列表很大的话,会不会出现

爆内存的情况?

其实set有一个update方法,效果是把不在set内的元素加入到set中。

就是说我们有个set,a = {1, 2, 3, 4, 5},然后set.update([1,2,6]),只有6会加入到a。

所以另一种方法就出现了:

[b.update(val) for val in q]
当然这个不能一行解决了,要先b = set(),最后b也是{1, 2, 3, 4, 5}。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值