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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
使用Pytorch来拟合函数方式
Jan 14 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
python利用tkinter实现屏保
2019/07/30 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
考研导师推荐信范文
2015/03/27 职场文书
研讨会通知
2015/04/27 职场文书
第一书记观后感
2015/06/08 职场文书
新生儿未入户证明
2015/06/23 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android