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 相关文章推荐
py中的目录与文件判别代码
Jul 16 Python
Python基础入门之seed()方法的使用
May 15 Python
python发送邮件功能实现代码
Jul 15 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
使用pth文件添加Python环境变量方式
May 26 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
php-fpm中max_children的配置
2019/03/15 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
关于redux-saga中take使用方法详解
2018/02/27 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
python 控制语句
2011/11/03 Python
Python实现从百度API获取天气的方法
2015/03/11 Python
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Python交互式图形编程的实现
2019/07/25 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
咖啡馆创业计划书
2014/01/26 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
实习指导教师评语
2014/12/30 职场文书
教师个人年终总结
2015/02/11 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL