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读取excel表格生成erlang数据
Aug 26 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
python async with和async for的使用
Jun 20 Python
python实现简易学生信息管理系统
Apr 05 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
Python pandas库中的isnull()详解
Dec 26 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
如何在Python项目中引入日志
May 31 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP pear安装配置教程
2016/05/14 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
干部行政关系介绍信
2014/01/17 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
创优争先心得体会
2014/09/11 职场文书
毕业生自荐信范文
2015/03/05 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android