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网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
在Python的web框架中配置app的教程
Apr 30 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
详解python中的json和字典dict
Jun 22 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
增大python字体的方法步骤
Jul 05 Python
python 带时区的日期格式化操作
Oct 23 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
不同Jquery版本引发的问题解决
2013/10/14 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
用Python实现协同过滤的教程
2015/04/08 Python
python实现自动登录
2018/09/17 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
python适合人工智能的理由和优势
2019/06/28 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
自动一体化专业求职信
2014/03/15 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
网络技术专业求职信
2014/05/02 职场文书
名人演讲稿范文
2014/09/16 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
介绍信样本
2015/01/31 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript