当前位置:
首页 > Python基础教程 >
-
Python学习,第五课 - 列表、字典、元组操作
本篇主要详细讲解Python中常用的列表、字典、元组相关的操作
一、列表
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
通过下标获取元素
#先定义一个列表 letters = ['a', 'b', 'c', 'd', 'e'] letters[1] #输出:b #列表的索引是从0开始 letters[-1] #输出:e #也可以倒着取,-1既倒数第一个元素
切片:获取列表中多个元素
letters = ['a', 'b', 'c', 'd', 'e'] #从下标1开始,取到下标3之前,不包括下标3 letters[1:3] #输出结果:['b', 'c'] #取下标2到-1,-1既倒数第一个,这里不包括-1 letters[2:-1] #输出结果:['c', 'd'] letters[0:-1] #如果从0开始取,0可以不输入,下面这个和上面一样的效果 letters[:-1] #输出结果都是:['a', 'b', 'c', 'd'] #取到结尾,如果想取到最后一个不能用-1,直接忽略既可 letters[1:] #输出结果:['b', 'c', 'd', 'e'] #如果在后面加一个2,就是在原有的条件下,每隔一个元素获取一个 letters[1::2] #输出结果:['b', 'd']
追加 append
letters = ['a', 'b', 'c', 'd', 'e'] letters.append('f') print(letters) #输出结果:['a', 'b', 'c', 'd', 'e', 'f'] #就是在列表结尾添加一个新元素
插入 insert
letters = ['a', 'b', 'c', 'd', 'e'] letters.insert(3, 'F') print(letters) #输出结果:['a', 'b', 'c', 'F', 'd', 'e'] #在下标3的位置插入一个元素
修改
letters = ['a', 'b', 'c', 'd', 'e'] letters[0] = 'A' print(letters) #输出结果:['A', 'b', 'c', 'd', 'e'] #修改指定下标的元素
删除
letters = ['a', 'b', 'c', 'd', 'e'] #del删除索引元素 del letters[0] #输出结果:['b', 'c', 'd', 'e'] #remove删除指定元素 letters.remove('b') #输出结果:['a', 'c', 'd', 'e'] #pop删除列表中最后一个值 letters.pop() #输出结果:['a', 'b', 'c', 'd']
扩展 extend
letters = ['a', 'b', 'c', 'd', 'e'] letters2 = [1, 2, 3, 4] letters.extend(letters2) #输出结果:['a', 'b', 'c', 'd', 'e', 1, 2, 3, 4] #既把列表letters2的元素都添加到letters中
拷贝
letters = ['a', 'b', 'c', 'd', 'e', ['f', 'g']] letters_copy = letters.copy() print(letters_copy) #输出结果:['a', 'b', 'c', 'd', 'e', ['f', 'g']]
看上面的方法好像确实copy成功了。但是还没完,我们在来试试修改copy之后的列表
letters = ['a', 'b', 'c', 'd', 'e', ['f', 'g']] letters_copy = letters.copy() letters_copy[5][1] = 'h' print(letters) print(letters_copy) #输出结果: #['a', 'b', 'c', 'd', 'e', ['f', 'h']] #['a', 'b', 'c', 'd', 'e', ['f', 'h']]
我们上面吧 letters_copy 的第5个元素中的 ‘g’改成‘h’,结果打印结果发现,letters也跟着改变了。
其实此处copy是浅copy,只copy列表的第一层,第二层没有copy,而是指向相同地址
第二个列表中的元素只是第一个列表中每一个元素的一个引用
那么重点来了,我们想要完全copy一个列表的时候怎么办?当然有办法
引用一个copy模块,调用copy模块中的deepcopy方法,既可实现深copy
import copy letters = ['a', 'b', 'c', 'd', 'e', ['f', 'g']] letters_copy = copy.deepcopy(letters) letters_copy[5][1] = 'h' print(letters) print(letters_copy) #输出结果: #['a', 'b', 'c', 'd', 'e', ['f', 'g']] #['a', 'b', 'c', 'd', 'e', ['f', 'h']]
这样就可以完全copy了。
统计 count
letters = ['a', 'b', 'c', 'd', 'e', 'b'] print(letters.count('b')) #输出结果:2 #统计指定元素在列表中的数量
排序 sort
letters = ['a', '#b', '1f', 'c', 'e', 'd', '承受'] letters.sort() print(letters) #输出结果:['#b', '1f', 'a', 'c', 'd', 'e', '承受'] #将列表安装顺序从新排序 #排序的顺序是,特殊符号-->数字-->字母-->汉字 #这里要注意,在Python 3中,不同数据类型是不能排序的,否则会报错 letters = ['a', 'b', 'f', 'c', 'e', 'd', 1, 2] letters.sort() #像上面这样的列表排序就会报错 #TypeError: unorderable types: int() < str()
反转 reverse
letters = ['a', 'b', 'c', 'd', 'e'] letters.reverse() print(letters) #输出结果:['e', 'd', 'c', 'b', 'a'] #将列表倒序
获取下标 index
letters = ['a', 'b', 'c', 'd', 'e'] print(letters.index('b')) #输出结果:1 #获取指定元素的下标位置
二、字典
字典是一种key - value 的数据类型,使用就像我们用的字典,通过笔划、字母来查对应页的详细内容,一个键对应一个值。
语法如下:
info = { 'name01': '刘玄德', 'name02': '关云长', 'name03': '张翼德', 'name04': '赵子龙', 'name05': '马孟起' }
这里要说下字典有哪些特性:
- 字典是无序的,所以字典中元素每次的位置都可能变化
- 字典中key必须是唯一的,所以字典的键天生就去重了
增加
info = { 'name01': '刘玄德', 'name02': '关云长', 'name03': '张翼德', 'name04': '赵子龙', 'name05': '马孟起' } info['name06'] = '黄汉升' print(info) #输出结果:{'name05': '马孟起', 'name01': '刘玄德', 'name03': '张翼德', 'name06': '黄汉升', 'name04': '赵子龙', 'name02': '关云长'} #直接给一个不存在的键赋值就可以添加一个字典元素了
修改
info = { 'name01': '刘玄德', 'name02': '关云长', 'name03': '张翼德', 'name04': '赵子龙', 'name05': '马孟起' } info['name05'] = '黄汉升' print(info) #输出结果:{'name04': '赵子龙', 'name02': '关云长', 'name01': '刘玄德', 'name03': '张翼德', 'name05': '黄汉升'} #方法和添加一样,只要键值存在,则直接覆盖
删除
info = { 'name01': '刘玄德', 'name02': '关云长', 'name03': '张翼德', 'name04': '赵子龙', 'name05': '马孟起' } #删除方法有多种 #1.用pop删除,用到最多且最好的一种 info.pop('name01') #2.del 内置的删除函数,和第一种效果一样 del info['name02'] #3.popitem,这个是在字典中随机删除一个元素 info.popitem() print(info) #输出结果:{'name03': '张翼德', 'name05': '马孟起'}
查找
info = { 'name01': '刘玄德', 'name02': '关云长', 'name03': '张翼德', 'name04': '赵子龙', 'name05': '马孟起' } #in判断key是否存在 print('name01' in info) #输出结果:True #get获取key的值 print(info.get('name02')) #输出结果:关云长 #同上获取key的值 print(info['name02']) #输出结果:关云长 #这里要注意,用这种方法取值,如果key不存在程序会报错 print(info['name12']) #报错KeyError: 'name102' #如果使用get则不会报错,会返回None
多级字典的相关操作
heros = { '魏国':{ '曹操':['枭雄','对酒当歌人生几何'], '司马懿':['谋略滔天'] }, '蜀国':{ '刘备':['哭'], '关羽':['义薄云天'] }, '吴国':{ '孙权':['年少有为'], '周瑜':['既生瑜何生亮'] } } heros['魏国']['曹操'][0] += ',宁可我负天下人' print(heros['魏国']['曹操']) #输出结果:['枭雄,宁可我负天下人', '对酒当歌人生几何'] #直接在元素中追加了内容
取所有键和值
info = { 'name01': '刘玄德', 'name02': '关云长', 'name03': '张翼德', 'name04': '赵子龙', 'name05': '马孟起' } #取所有键 print(info.keys()) #输出结果:dict_keys(['name04', 'name01', 'name03', 'name02', 'name05']) #取所有值 print(info.values()) #输出结果:dict_values(['赵子龙', '刘玄德', '张翼德', '关云长', '马孟起'])
setdefault 函数
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式