Python-列表、元组、字典、集合
Last updated on June 29, 2025 pm
数据结构
- 序列类型:列表、元组、字符串
- 映射类型:字典
- 集合类型:集合、冻结集合
列表 (List)
列表是Python中最灵活的有序的集合类型
列表的基本特性
- 有序的集合,元素按照插入的顺序排列
- 可变,可以修改内容
- 可以包含任意类型的对象 , 可以嵌套使用
- 使用方括号[],元素之间用逗号分隔
eg :
list = [123,'test',1.2,1e10,[1,2,3]]
底层实现
列表实际上是一个动态数组,而不是链表
列表在内存中分配的空间通常比实际需要的多,这是为了优化追加的操作
平均世间复杂度为o(1)
列表元素在内存中不连续存储,列表只存储指向各个元素的指针
创建列表
- 普通方式
list = []
for i in range(10):
list.append(i)
- 推导式
list = [i for i in range(10)]
##带有条件的情况
list = [i for i in range(10) if i % 2 == 0]
列表的输出
与字符串的索引一样,列表索引从0开始,第二个索引为1,最后一个元素的索引也可以是-1
- 直接输出
list = [1,2,3,4,5,6]
print(list)
- 访问列表中的值
list = [1,2,3,4,5,6]
print(list[1])
- 截取字符串
list = [1,2,3,4,5,6]
print(list[1:3])
更新列表
使用 append() 方法
eg:
list = [1,2,3,4,5,6]
list.append(7)
print(list)
删除列表元素
- 使用del语句
- 使用 remove() 方法
- 使用 pop() 方法
list = [1,2,3,4,5,6]
list.pop(1)
del list[1]
list.remove(1)
print(list)
列表脚本操作符
表达式 | 描述 |
---|---|
len([1,2,3]) | 长度 |
[1,2,3]+[4,5,6] | 组合 |
[1]*4 | 重复 |
3 in [1,2,3] | 元素是否存在列表中 |
for x in [1,2,3]:print(x,end=” “) | 迭代 |
列表常用函数&方法
- python 包含一下函数
函数 | 描述 |
---|---|
len() | 列表元素个数 |
max() | 返回最大值 |
min() | 返回最小值 |
list(seq) | 将元组转换为列表 |
- python 包含以下方法
方法 | 描述 |
---|---|
list.append() | 在列表末尾追加新的对象 |
list.count() | 统计某个元素在列表中出现的次数 |
list.extend() | 在列表末尾一次性追加另一个序列中的多个值 |
list.index() | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop() | 移除列表中第一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove() | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中的元素 |
list.sort(key=None,reverse=False) | 对列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制 |
元组(Tuple)
元组与列表类似,不同之处在于元组的元素不能修改
元组使用 () 小括号,列表使用方括号 []
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开
eg:
tup1 = ("Google","baidu","github","bing")
创建空元组
tup1 = ()
注意:当元组中只包含一个元素时,需要在元素后面加逗号. 否则括号会被当做运算符使用
访问元组
和列表一样,元组可以使用下标索引来访问元组中的值
eg:
tup1 = ("Google","baidu","github","bing")
print ("tup1[0]: ", tup1[0])
修改元组
元组中的元素是不允许被修改的,但是可以对元组进行连接组合
eg:
tup1 = (1,2,3)
tup2 = (4,5)
#tup1[0]=0 这种操作是非法的
tup3 = tup1 + tup2
删除元组
元组中的元素值不允许被删除,但是可以使用del 语句来删除整个元组
eg:
tup1 = ("Google","baidu","github","bing")
del tup1
元组的运算
与字符串一样,元组之间可以使用 +、+=、*号进行运算
eg: 复制
tup1 = ("asd",)*4
元组的内置函数
基本和列表相同,不再赘述
计算个数、最大值、最小值
方法 | 描述 |
---|---|
tuple(iterable) | 将可迭代系列转换为元组 |
字典(Dict)
字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值 key=>value 用冒号:分割,每个对之间用逗号分隔,整个字典包括在花括号中
d = {key1 : value1, key2 : value2, key3 : value3 }
注意:dict作为python的关键字和内置函数,变量名不建议命名为dict
键 必须是唯一的,但值不必
值可以取任何数据类型,但键必须是不可变的,如字符串,数字
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
创建空字典
- 使用花括号 {} 创建空字典
emptyDict = {}
- 使用内置函数 dict() 创建空字典
emptyDict = dict()
访问字典中的值
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])
修改字典
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "菜鸟教程" # 添加信息
删除字典中的元素
- 使用del 语句删除字典
# 删除键‘Name’
del qweDict['Name']
# 删除整个字典
del qweDict
del 删除后整个字典不再存在
- 清空字典
qweDict.clear()
字典键的特性
- 不允许同一个键出现两次,创建时同一个键如果被赋值两次,后一个值会被记住
- 键必须不可变,所以可以用数字,字符串或元组充当,而列表就不行
字典内置函数&方法
- python字典包含以下内置函数
函数 | 描述 |
---|---|
len() | 计算元素个数 |
str() | 输出字典 |
type() | 返回输入的变量类型,如果变量是字典,就返回字典类型 |
- python字典包含以下内置方法
方法 | 描述 |
---|---|
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.formkeys() | 创建一个新的字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key, default=None) | 返回执行键的值,如果键不在字典中返回default 设置的默认值 |
key in dict | 如果键在字典返回true,否返回false |
dict.items() | 以列表返回一个试图对象 |
dict.keys() | 返回一个试图对象 |
dict.setdefault(key,dafault=None) | 和get()类似,但如果键不在字典中,将回添加键并将值设为default |
dict.update(dict2) | 把字典dict2的键值对更新到dict中 |
dict.values() | 返回一个试图对象 |
dict.pop(key) | 删除字典key所对应的值,并返回被删除的值 |
dict.popitem() | 返回并删除字典中最后一对键和值 |
集合(Set)
集合是一个无序的不重复的元素序列
集合中的元素不会重复,并且可以进行交集,并集,差集等常见的集合操作
可以使用花括号{}创建集合,元素之间用逗号,分隔,或者也可以使用set()函数创建
eg:
set1 = {1,2,3,4}
set2 = set([5,6,7])
注意:创建空集合时必须用set()函数,因为 {} 用来创建一个空字典
集合内置方法整合表
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝多个集合的差集 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合中也存在 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回False |
issubset() | 判断指定集合是否为该方法参数集合的子集 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合 |
sysmmetric_difference_update() | 移除当前集合中在另外一个指定集合中相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
len() | 计算集合元素的个数 |