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中的多线程编程
Apr 09 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
python回调函数中使用多线程的方法
Dec 25 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
python删除字符串中指定字符的方法
Aug 13 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
Python类反射机制使用实例解析
Dec 30 Python
python time()的实例用法
Nov 03 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
如何用Python搭建gRPC服务
Jun 30 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
dedecms系统常用术语汇总
2007/04/03 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
利用python批量检查网站的可用性
2016/09/09 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python selenium xpath定位操作
2020/09/01 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
python开发入门——set的使用
2020/09/03 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
夜大自我鉴定
2013/10/31 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
老师的检讨书
2014/02/23 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫