python技巧(2)--碾平列表和列表去重

总第 116 篇文章,本文大约  1000 字,阅读大约需要 3 分钟

今天介绍和列表相关的两个小技巧:

  • 碾平列表(flatten list),也就是列表里的元素也带有列表的情况;

  • 列表去重,保留原始顺序和不保留顺序的做法


1. 碾平列表

碾平列表(flatten list ),即当列表里面嵌套列表,如何将这些子列表给取出来,得到一个不包含子列表的列表,示例如下:

list1 = [1, [2, [3,4]], 5]=>new_list = [1, 2, 3, 4, 5]

这里介绍 3 种方法,分别如下。

方法1:利用递归的思想,代码如下:

list1 = [1, [2, [3,4]], 5]
res = []def fun(s):for i in s:if isinstance(i, list):fun(i)else:res.append(i)fun(list1)
print(res)

接着是两种比较高级的写法,用 lambda 实现一个匿名函数

方法2:

flat = lambda L: sum(map(flat, L), []) if isinstance(L, list) else [L]print(flat(list1))

方法3:

a = [1, 2, [3, 4], [[5, 6], [7, 8]]]flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]print(flatten(a))

2. 列表去重

列表去重可能会破坏原有的顺序,所以下面分别介绍保留顺序和不保留顺序的做法。

去重,但改变顺序

去重但改变顺序,两种方法

方法1 就是利用 set 进行去重

l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print l2

方法2 是利用字典的键不重复的特性,将列表的元素作为一个字典的键,然后返回这个字典的所有键,即可实现去重的操作。

l1 = ['b','c','d','b','c','a','a']
l2 = {}.fromkeys(l1).keys()
print l2

去重,不改变顺序

利用 sortedset 方法实现去重并保留原始顺序,这里 sorted 指定排序的规则就是按照原列表的索引顺序

l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)
print l2

欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!

如果觉得不错,在看、转发就是对小编的一个支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

typedef struct 是什么意思

typedef用于定义一种新类型例如定义了如下的结构typedef struct student{int age;int score;}STUDENT;那么则有STUDENT stu1;就相当于struct student stu1;上面的结构也可以直接定义为:typedef struct {int age;int score;}STUDENT;然后将STUDENT作为新…

react学习(19)----可以通过设置默认值去回调

const {dispatch,activity: { cmsPopupList [] },} this.props;

原来电脑并不需要重装系统才能恢复出厂设置,这个操作学起来!

前言 小伙伴们应该都知道手机上有恢复出厂设置的功能,如果想要把手机送给朋友或者卖给别人,就会先恢复出厂设置。 但换到Windows电脑上之后,如果出现同样的情况,就会第一时间想到重装系统。就好像Windows电脑上不存在恢复出厂设…

2020年周记(2/50)

总第 117 篇文章,本文大约 1400 字,阅读大约需要 5 分钟因为春节假期的延长,中间还是休息过长,少了两周的周记了,这是2020年的第二篇周记,内容还是这几个方面:工作学习阅读&写作其他下周计划…

网站权重与排名浅谈

网站权重与排名浅谈  网站权重定义:搜索引擎给网站总体赋予一定的权威值(现今这个是一个没有确切的数据),对网站总体权威的评估或者评价,一个网站权重越高,在搜索引擎所占的份量越大,&#xf…

一日一学:返回排序好的列表的索引顺序

总第 118 篇文章,本文大约 700 字,阅读大约需要 2 分钟今天介绍的是对列表排序后,返回排序好的索引顺序。问题描述:给定一个列表 [2, 3, 1, 4, 5] ,怎么返回排序后的索引顺序,即 [2,0,1,3,4] ?解决方法&a…

react学习(21)---接口加回调显示

this.props.dispatch({type: activity/addActivityPopup,payload: params,callback: (res) > {if (res.returnCode 0) {message.success(新增成功);} else {message.error(res.returnMsg);}},});

给不了你的幸福

对你的好感从没减少过。我也许真的是个懦弱的人,一直没有真正的对你表露过我自己内心真实的想法。我脸皮薄,那种死皮赖脸的追求办法就是想做也做不出来。一直和你尴尬的相处着,希望从和你聊天的过程中得知你的近况。即使再忙,哪怕…

2020年周记(3/50)

总第 119 篇文章,本文大约 700 字,阅读大约需要 2 分钟第三篇周记,依然在家办公的一周。工作学习阅读&写作其他下周计划ps. 昨天发文章后才发现有些地方需要修改,所以删除了发出的文章,修改后再发出来&#xff1…

react学习(22)---需要export

import React, { Component } from react;class Edit extends Component {render() {return <div>1111</div>;} }export default Edit;

C#泛型理解(转)

[译]C# 理解泛型 PDF 浏览&#xff1a;http://www.tracefact.net/document/generics-in-csharp.pdf源码下载&#xff1a;http://www.tracefact.net/SourceCode/Generics-In-CSharp.rar出 处&#xff1a;http://www.ondotnet.com/pub/a/dotnet/2004/05/17/liberty.html术语表gen…

一日一学--如何对数值型特征进行分桶

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 120 篇文章&#xff0c;本文大约 1200 字&#xff0c;阅读大约需要 3 分钟今天这篇文章主要是介绍在特征工程中&#xff0c;对数值型特征进行分桶操作的方法。简介分桶是离散化的常用…

ThinkPHP分页链接支持数组参数的办法

这几天在用ThinkPHP做系统&#xff0c;搜索页有个数组参数提交 <input class"params_t" name"t[]" type"checkbox" value"email"> <input class"params_t" name"t[]" type"checkbox" value&qu…

常见的数据增强项目和论文介绍

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 121 篇文章&#xff0c;本文大约 1100 字&#xff0c;阅读大约需要 3 分钟在机器学习项目中&#xff0c;数据集对算法模型的性能是有很大的影响的&#xff0c;特别是现在深度学习&a…

PS网页设计教程XXIX——如何在PS中设计一个画廊布局

作为编码者&#xff0c;美工基础是偏弱的。我们可以参考一些成熟的网页PS教程&#xff0c;提高自身的设计能力。套用一句话&#xff0c;“熟读唐诗三百首&#xff0c;不会作诗也会吟”。 本系列的教程来源于网上的PS教程&#xff0c;都是国外的&#xff0c;全英文的。本人尝试翻…

RS(2)--从文本数据到用户画像

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 122 篇文章&#xff0c;本文大约 5100 字&#xff0c;阅读大约需要 15 分钟上一篇文章简单介绍了推荐系统的定义和应用&#xff0c;推荐系统第二篇&#xff0c;简单介绍用户画像的知…

word2003设置页码不从第一页开始的方法

问题描述&#xff1a;如果你想设置页码从第三四页开始&#xff0c;前边不要页码&#xff0c;或者前边的页码是不同类型的。那么这个时候就要用到&#xff1a;插入->分隔符模式。 如果你的页面中的各个标题是从样式和格式中选择的&#xff0c;既是你先设置好各种标题的样式和…