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中将字典转换成其json字符串
Jul 16 Python
python使用urllib2提交http post请求的方法
May 26 Python
python skimage 连通性区域检测方法
Jun 21 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
树莓派实现移动拍照
Jun 22 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
Python实现我的世界小游戏源代码
Mar 02 Python
Python绘画好看的星空图
Mar 17 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
php和asp语法上的区别总结
2019/05/12 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
ES6的新特性概览
2016/03/10 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python并发编程之线程实例解析
2017/12/27 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
pytorch数据预处理错误的解决
2020/02/20 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
python缩进长度是否统一
2020/08/02 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
请解释在new与override的区别
2012/10/29 面试题
幼儿园春季开学寄语
2014/04/03 职场文书
10的分与合教学反思
2014/04/30 职场文书
企业党员一句话承诺
2014/05/30 职场文书
财务工作检讨书
2014/10/29 职场文书
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers