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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python随机函数random()使用方法小结
Apr 29 Python
儿童python练习实例
May 27 Python
python使用webdriver爬取微信公众号
Aug 31 Python
python中open函数的基本用法示例
Sep 07 Python
python集成开发环境配置(pycharm)
Feb 14 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 Python
python爬虫之selenium库的安装及使用教程
May 23 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
PHP基础学习小结
2011/04/17 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
工作分析计划书
2014/04/30 职场文书
保护环境倡议书100字
2014/05/19 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
装修活动策划方案
2014/08/27 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
交通安全温馨提示语
2015/07/14 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL