容器类型
Python提供了列表、元组、字典和集合这几种常用的数据结构,这篇笔记我们简单介绍其常见用法。
list 列表
Python中的list
(列表)也可以称作动态数组,和C语言等不同,Python的列表初始化时无需指定长度,它支持动态添加和删除元素,而且也可以存储不同的数据类型。下面例子我们定义了一个列表,其中存储了两个字符串。
animals: list[str] = ['dog', 'cat']
列表使用中括号声明,实际上Python的列表里面可以是任意数据类型,不过上面代码我们用类型标注规定列表只能存储字符串,一般来说,列表存储的都是同种类型,存储多种类型可能会让代码变的迷惑和脆弱,因此不推荐这种做法。
如果想要定义一个空列表,我们直接使用[]
初始化即可。
animals: list[str] = []
len()
函数可以获取列表的长度。
animals: list[str] = ['dog', 'cat']
length: int = len(animals)
列表可以使用下标访问,其中下标从0
开始,到len - 1
结束。同时还有一个反向索引,从-1
开始,-1
表示最后一个元素。如果使用超出下标范围的的索引会抛出IndexError
异常。
animals: list[str] = ['dog', 'cat']
a: str = animals[0]
下面例子演示如何对列表中的元素进行添加和删除。
animals: list[str] = ['dog', 'cat']
# 在列表末尾添加一个元素
animals.append('bird')
# 在下表为0处添加元素
animals.insert(0, 'fish')
# 删除列表最后的元素
animals.pop()
# 删除下标位置为1的元素
animals.pop(1)
列表可以使用for
循环进行迭代。
animals: list[str] = ['dog', 'cat', 'fish']
for a in animals:
print(a)
tuple 元组
元组是一个不可变的集合,它和列表类似可以使用len()
获取长度也可以使用下标访问和for
迭代,但元组是不可变的。下面代码我们定义了一个包含两个字符串的元组。
animals: tuple[str, str] = ('dog', 'cat')
我们可以看到,元组使用小括号()
定义,其类型标注可以写明具体位置的具体类型,如果元组的长度很长且都是同一类型,我们也可以将类型标注写作形如[str, ...]
。
元组的使用场景是封装多个同类不可变数据,例如常量、配置信息等。此外元组最主要的使用场景就是封装函数的多个返回值,下面例子中foo()
函数返回两个返回值,它实际上就是一个元组,只是这种情况元组的小括号可以省略,调用函数时,我们可以用多个逗号分隔的变量接收返回值。
def foo() -> tuple[int, int]:
return 1, 2
x, y = foo()
dict 字典
字典是一组支持增删改查的键值对,类似于Java中的Map
,Python的字典底层使用优化的哈希表实现,因此Python的字典是无法保证顺序的。下面代码我们定义了一个简单的字典,其中键是字符串值是整数。
kv: dict[str, int] = {'Tom': 18, 'Jerry': 17}
字典使用大括号定义字面值,如果希望创建空字典,使用{}
初始化即可。
字典可以使用键名访问,下面是一个例子。
kv: dict[str, int] = {'Tom': 18, 'Jerry': 17}
tom_age: int = kv['Tom']
如果索引不存在,会抛出KeyError
异常。如果想要避免这个异常,我们可以提前判断索引是否存在。
kv: dict[str, int] = {'Tom': 18, 'Jerry': 17}
if 'Tom' in kv:
tom_age: int = kv['Tom']
下面代码演示如何对字典添加和删除元素。
kv: dict[str, int] = {'Tom': 18, 'Jerry': 17}
# 添加元素
kv['Lucy'] = 19
# 删除元素
kv.pop('Tom')
字典可以使用for
循环进行遍历,下面是一个例子。
kv: dict[str, int] = {'Tom': 18, 'Jerry': 17}
for k in kv:
print(f'{k} => {kv[k]}')
除此之外,我们还可以使用dict.keys()
,dict.values()
,dict.items()
获取字典的键列表,值列表,键值对元组列表。使用这些数据也可以间接用来遍历等操作。
kv: dict[str, int] = {'Tom': 18, 'Jerry': 17}
keys = kv.keys()
values = kv.values()
items = kv.items()
set 集合
Python的集合表示一组无重复的数据,下面例子我们创建了一个包含整数的集合。
s: set[int] = {1, 2, 3}
集合使用大括号创建,但是注意要创建一个空集合就不能{}
了,这样和dict
冲突,所以创建空集合可以使用set()
。
集合也可以添加和删除元素,下面是一个例子。
s: set[int] = set()
# 添加元素
s.add(3)
# 删除元素
s.remove(2)
集合可以使用for
循环进行迭代,下面是一个例子。
s: set[int] = {1, 2, 3}
for i in s:
print(i)