一、list列表类型:
一种有序集合,里面有多个数据用逗号隔开,可以对数据进行追加、插入、删除和替换;使用[]标识,可以包含任意数据类型
列表的基本操作
创建列表
- 方法1:list(iterable)函数
使用list(iterable)函数:可迭代对象(字符串、列表、元组、集合和字典等)
- 方法2:[元素1,元素2,……]
通过索引操作列表元素
列表封包和列表解包
解包时,变量的数量必须与列表中的元素的个数相同,否则会抛出异常
可以使用通配符(*)部分元素解包
追加元素
列表是可变的序列对象,可以追加元素
- 单个元素追加append(x)
- 多个元素追加:(+)运算符或者列表的extend(t)方法
插入元素
list.insert(i,x)方法,i指定索引位置,x是要插入的元素
替换元素
直接赋值符号(=)
删除元素
- list.remove(x)
找到匹配的元素x,则删除该元素,如果多个匹配元素,只删除第一个匹配的元素
- pop方法
- del方法
list内元素翻转
- x.reverse()
list内的元素排序
x.sort()升序排序;x.sort(reverse=True)降序排序
list的切片
列表的切片:分割一个列表,只提取其中某一个片段出来
- list[start: end: step]
- start: 从哪里开始,
- end: 到哪里结束,
- step: 步长,每几个元素获取一次值 – 默认为1,可以省略;左闭右开(取头不取尾)
list的元素统计
统计元素的个数:count() – 判断这个元素在列表中有几个
常见方法
- append:在列表最后插入新的值
- clear:清除列表内容
- copy:复制列表
- count:统计某个元素在列表中出现的次数
- extend:在列表结尾插入另一个列表,用新列表扩展原有的列表。列表相加产生一个新列表,extend改变被扩展的列表
- index:从列表中找出某个值第一次出现的索引位置
- insert:将值插入列表的指定位置
- pop:移除列表中的元素,默认是最后一个元素,并返回该元素的值
- remove:移除列表中某个值的第一次匹配项
- reverse:将列表中的元素反向存放
- sort:对列表进行排序,改变原来的列表
需要注意的点
由于列表是可变类型,因此如果使用浅拷贝会改变原始值、目标值。
若不想改变可用深拷贝
二、dict字典类型:
用于存储关联关系的数据,标识{键:值, key:value}键值对之间用逗号隔开, 字典中key值具有唯一性,不能重复
创建字典
- dict()函数,通过列表(元组)或命名参数建立字典
- {key1:value1,key2:value2,……key_n:value_n}
字典的基本操作
1、dict内访问键值对
print(a[‘key’]) 通过字典内的key可直接获取value
2、dict内修改键值对:
x[‘key’]=‘zz’ 通过获取value的方式,将新的值赋值给value
3、dict内增加键值对:
x[‘key’]=‘yy’ 通过修改不存在的键值对方式,直接将不存在的键值对添加至字典内
4、dict内删除键值对:
del x[‘key’],.pop (‘key’)
5、list内的元素作为dict的key:
x.fromkeys(y,“none”)
fromkey方法,用于将列表内的元素作为字典的key来使用,注:需要先创建空字典,然后再将列表内的元素作为字典内的key
6、dict内多个键值对进行更新:
a.update(b) 注:此函数没有返回值
将b的键-值对更新到字典a 中,b可以是字典、列表等;此函数亦可作修改字典使用(相同的key,不同的value)
7、dict遍历:
items()、keys()、values()
- items() 方法把字典中每对 key 和 value 组成一个元组,并把这些元组放在列表中返回。
- keys()方法把字典的key视图
- values返回字典的值试图
三、set集合类型:
是一种可迭代的、无序的、不能包含重复元素的容器类型数据
set的操作
创建集合
可以使用大括号 { } 或者 set() 函数创建集合。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。创建非空集合只能使用{ }
set内不能有重复的值
添加元素
.add(),将需要添加的元素当做一个整体,添加到集合中去。如果元素已经存在,则不能添加,不会抛出错误
.update()是把要传入的元素拆分,做为个体传入到集合中(如传入列表、集合、元组等,拆分后作为个体传入)
删除元素
remove(elem)
如果元素不存在,则抛出错误
discard 方法
如果元素不存在集合中,那么程序不会报错
pop 方法
随机删除集合中的一个元素,并返回被删除的元素,如果集合为空,程序报错
difference_update方法
删除集合x与序列y的重复元素
intersection_update方法
删除集合A中与序列B不重复的元素
clear()清除集合
set集合运算
x&y交集,x|y并集, x-y差集, x^y非交集
set内是否有重复:
.isdisjoint()
使用isdisjoint方法,用于判断两个集合是否不含相同的元素,如果不含返回 True,如果含有返回 False
总结:
- 序列元素是有序的,其中列表是可变的,元组是不可变
- 集合元素是无序的,且不能重复
- 字典通过键来访问元素,由键视图和值视图构成,键视图不能包含重复的元素
列表(List)
优点:
- 有序性:列表中的元素按照插入的顺序排列,支持索引访问。
- 灵活性:可以动态添加、修改或删除元素,适合用于需要频繁变更的数据集合。
- 异构性:可以容纳不同类型的元素,如整数、字符串、对象等。
区别:
- 与其他三种相比,列表的主要区别在于其可变性和异构性,但这也使得它在某些情况下不如集合或字典高效。
集合(Set)
优点:
- 唯一性:自动去除重复元素,适合用于需要确保元素唯一性的场景。
- 高效查找:基于哈希表实现,提供了快速的成员测试和交、并、差等集合运算。
- 无序性:不保证元素的顺序,适合于对顺序不敏感的数据处理。
区别:
- 集合的独特之处在于其唯一性和无序性,适用于需要快速查找和处理无序数据集合的情况。
字典(Dict)
优点:
- 键值对:通过键(必须唯一)快速访问值,提供高效的映射关系存储。
- 灵活性:键可以是几乎任何不可变类型,支持动态添加、修改键值对。
- 无序性:虽然Python 3.7+中字典保持了插入顺序,但本质上字典是无序的。
区别
字典的核心优势在于键值映射,适合构建复杂的数据结构,如缓存、配置等。
元组(Tuple)
优点:
- 不可变性:一旦创建,元素便不可更改,这有助于保护数据免受意外修改。
- 轻量级:相比于列表,元组在内存占用上更小,因为它是静态数据结构。
- 可作为字典键:由于其不可变性,元组可以直接作为字典的键使用。
区别:
- 元组的主要特征是不可变性和轻量级,适用于不需要修改的固定数据集合,如函数返回多个值的场景。