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中的变量、引用、拷贝和作用域的问题
Apr 07 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
pandas series序列转化为星期几的实例
Apr 11 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
python opencv如何实现图片绘制
Jan 19 Python
Python求平面内点到直线距离的实现
Jan 19 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
js中有关IE版本检测
2012/01/04 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
python列表的常用操作方法小结
2016/05/21 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
selenium+python环境配置教程详解
2019/05/28 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
写得不错的求职信范文
2014/07/11 职场文书
学校运动会广播稿
2014/10/11 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫