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中的URLError异常的方法
Apr 30 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Python读取指定日期邮件的实例
Feb 01 Python
linux下python中文乱码解决方案详解
Aug 28 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
python在不同条件下的输入与输出
Feb 13 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
Python小白垃圾回收机制入门
Jun 09 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
python 制作网站小说下载器
Feb 20 Python
python简单验证码识别的实现过程
Jun 20 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
You might like
一个更简单的无限级分类菜单代码
2007/01/16 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
记录Django开发心得
2014/07/16 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
利用python批量检查网站的可用性
2016/09/09 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Django中URL的参数传递的实现
2019/08/04 Python
Django--权限Permissions的例子
2019/08/28 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
上班离岗检讨书
2014/01/27 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
学习十八大演讲稿
2014/09/15 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
公司借条范本
2015/05/25 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
Node实现搜索框进行模糊查询
2021/06/28 Javascript