Python实现列表拼接和去重的三种方式


Posted in Python onJuly 02, 2021
目录
  • 列表拼接三种方式
    • 方式一:简简单单的“+”
    • 方法二:切片赋值
    • 方式三:列表自带的extend()
  • 列表去重的三种方式
    • 利用集合set的特性
    • 利用字典key的不可重复属性
    • 利用index()获取到的是第一次出现的索引

 

列表拼接三种方式

列表拼接主要有以下三种方式:

  • 最简单的使用“+”;
  • 使用切片赋值的方法;
  • 使用列表自带的extend方法

 

方式一:简简单单的“+”

>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
>>> id(list1)
4408465160
>>> id(list2)
4408325512
>>> list1 = list1 + list2
>>> list1
[1, 2, 3, 4, 5, 6]
>>> id(list1)
4408504776

此方法易于理解,但你会发现其实list1已经不是原来那个list1了,list1的id值已经发生改变。

 

方法二:切片赋值

在这里,我们发现使用切片赋值的拼接就地执行,即它会修改原来的列表,但易读性不高

>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
>>> id(list1)
4408465160
>>> id(list2)
4408504776
>>> list1[len(list1):len(list1)] = list2
>>> list1
[1, 2, 3, 4, 5, 6]
>>> id(list1)
4408465160

 

方式三:列表自带的extend()

>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
>>> id(list1)
4408325512
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6]
>>> id(list1)
4408325512

这里,你会发现列表自带的extend()也是就地执行,即它会修改原来的列表,直接在原来的列表后面拼接新列表。
综合上面三种方式,第一种的使用“+”拼接需要易于理解,但却不是就地执行,而是新开辟一块空间来存放新列表;第二种比较难于理解;还是Python列表自带的extend()拼接列表函数较为友好。

 

列表去重的三种方式

例如有以下一个列表:需要你进行去重,你能想到哪些方法呢?

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

 

利用集合set的特性

第一种方法(大家第一个都会想到的吧):利用集合set的特性

集合set特性:元素不能重复

>>> num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4]
>>> new_list = list(set(num_list))
>>> new_list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

利用字典key的不可重复属性

第二张方法(与集合拥有相同特性的):那么就是字典的键啦
先介绍一下函数dict.fromkeys(序列,设置键对应的值),返回一个由序列的元素作为键,设置的值作为所有键的值的字典,值省略的话所有键的值将默认为None;如果设置了值的话所有的键将会赋予同一个值,看例子:

>>> dict1 = dict.fromkeys([1,2,3,4])
>>> dict1
{1: None, 2: None, 3: None, 4: None}
>>> dict1 = dict.fromkeys([1,2,3,4],5)
>>> dict1
{1: 5, 2: 5, 3: 5, 4: 5}

那么正式使用字典键的特性进行去重,看例子:

>>> num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4]
>>> num_dict = dict.fromkeys(num_list)
>>> num_dict
{1: None, 8: None, 9: None, 2: None, 3: None, 4: None, 6: None, 5: None, 7: None, 10: None}
>>> new_list = list(num_dict.keys())
>>> new_list
[1, 8, 9, 2, 3, 4, 6, 5, 7, 10]

 

利用index()获取到的是第一次出现的索引

第三种方式:利用index()获取到的是第一次出现的索引
通过判断列表中值第一次出现的索引值与遍历的计数器的游标cursor值是否相等,相等的话则是第一次出现,否则是重复出现。看例子:

>>> num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4]
>>> new_list = []
>>> cursor=0
>>> while cursor < len(num_list):
...     if num_list.index(num_list[cursor]) == cursor:
...           new_list.append(num_list[cursor])
...     cursor += 1
...
>>> new_list
[1, 8, 9, 2, 3, 4, 6, 5, 7, 10]

到此这篇关于Python实现列表拼接和去重的三种方式的文章就介绍到这了,更多相关Python列表拼接和去重内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
python实现TF-IDF算法解析
Jan 02 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
django 解决manage.py migrate无效的问题
May 27 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
python装饰器常见使用方法分析
Jun 26 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
python yield关键词案例测试
Oct 15 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
PHP实现的oracle分页函数实例
2016/01/25 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
js常用代码段收集
2011/10/28 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python对html代码进行escape编码的方法
2015/05/04 Python
Python 加密与解密小结
2018/12/06 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
使用python接入微信聊天机器人
2020/03/31 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python生成器generator原理及用法解析
2020/07/20 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
英国著名药妆店:Superdrug
2021/02/13 全球购物
优秀幼教自荐信
2014/02/03 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
房屋产权证明书
2014/10/15 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
2015年入党决心书
2015/02/05 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书