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 Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
详谈python中冒号与逗号的区别
Apr 18 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
如何学习Python time模块
Jun 03 Python
Python如何使用input函数获取输入
Aug 06 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
php对数组排序代码分享
2014/02/24 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
python中bisect模块用法实例
2014/09/25 Python
详解Python 切片语法
2019/06/10 Python
python speech模块的使用方法
2020/09/09 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
自我评价的正确写法
2013/09/19 职场文书
市场部规章制度
2014/01/24 职场文书
教师对学生的寄语
2014/04/03 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL