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的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
Python如何使用turtle库绘制图形
Feb 26 Python
Python-for循环的内部机制
Jun 12 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
Matplotlib绘制混淆矩阵的实现
May 27 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php文件下载处理方法分析
2015/04/22 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
PHP中each与list用法分析
2016/01/08 PHP
PHP pear安装配置教程
2016/05/14 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
详解php中的implements 使用
2017/06/13 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
7个JS基础知识总结
2014/03/05 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
js+html制作简单验证码
2017/02/16 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
vue实现五子棋游戏
2020/05/28 Javascript
Python优先队列实现方法示例
2017/09/21 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python3.7 的新特性详解
2019/07/25 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
单位实习证明怎么写
2014/01/17 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
投诉信格式范文
2015/07/02 职场文书
学子宴致辞大全
2015/07/27 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书