容器类型

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)
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。