前言
数据容器的作用是存储类似类型或相关联的数据,这些数据有时需要进行多次调用以及后续处理。通过容器将数据保存在一个集合中能够更好地管理和组织这些数据。常用于数据的分类、搜索和排序等情况,常用的有列表、元组、集合、字典。(除了以上提到的每个容器种类外,也有其他更特殊化的python容器。例如numpy中提供的array)
1.详细介绍
(1)列表
列表(List)是一种可变序列类型,它可以存储任意类型的元素,并且可以进行增、删、改、查等操作。下面是关于 Python 列表的一些常用知识点:
1。创建列表
创建列表的方法非常简单,只需要使用方括号 [] 将多个元素括起来即可,元素之间用逗号 ',' 隔开。例如:
my_list = [1, 2, 3, 'hello']
2.访问元素
通过索引访问列表中的元素,索引从 0 开始。例如:
my_list = [1, 2, 3, 'hello']
print(my_list[0]) # 输出: 1
print(my_list[-1]) # 输出: 'hello'
3.修改元素
如果要修改列表中的某个元素,只需直接赋值即可。例如:
my_list = [1, 2, 3, 'hello']
my_list[1] = 'world'
print(my_list) # 输出: [1, 'world', 3, 'hello']
4.删除元素
有三种方法删除列表中的元素:pop(), remove() 和 del。其中,pop 方法弹出列表中的一个元素,并返回弹出的元素;remove 方法删除列表中指定的元素,如果列表中有多个相同的元素,只会删除第一个;del 方法通过提供索引来删除指定位置上的元素,或通过切片来删除一段元素。
my_list = [1, 2, 3, 'hello']
my_list.pop() # 弹出列表中的最后一个元素,返回 'hello'
my_list.remove(2) # 删除第一个值为 2 的元素
del my_list[0] # 删除列表中的第一个元素
del my_list[1:3] # 删除列表中的第二个和第三个元素
5.切片
切片可以用来访问列表中的一段连续元素。它由开始索引、结束索引和步长三个参数组成,其中步长默认为1。下面是一些例子:
my_list = [1, 2, 3, 'hello']
print(my_list[1:3]) # 输出: [2, 3]
print(my_list[:2]) # 输出: [1, 2]
print(my_list[-2:]) # 输出: [3, 'hello']
print(my_list[::2]) # 输出: [1, 3]
6.操作符
与其他序列类型相似,列表也支持加、乘、in 和 not in 等操作符。例如:
a = [1, 2]
b = ['hello', 'world']
print(a + b) # 输出: [1, 2, 'hello', 'world']
print(a * 3) # 输出: [1, 2, 1, 2, 1, 2]
print(1 in a) # 输出: True
print('hello' not in b) # 输出: False
以上是 Python 中列表的一些基本用法,列表还有很多高级用法和方法,包括排序、遍历、推导式等。
(2)元组
元组(Tuple)是一种不可变序列类型,它和列表非常相似,但元素不能被修改。下面是关于 Python 元组的一些常用知识点:
- 创建元组
创建元组的方法也很简单,只需要用小括号 () 将多个元素括起来即可,元素之间用逗号 ',' 隔开。例如:
my_tuple = (1, 2, 3, 'hello')
注意,如果元组只有一个元素,则需要在元素后面添加逗号表示这是一个元组而不是普通数据类型,例如:
t = (1,) # 这是一个包含一个元素的元组
x = (1) # 这只是一个整数
- 访问元素
通过索引访问元组中的元素,索引从 0 开始。例如:
my_tuple = (1, 2, 3, 'hello')
print(my_tuple[0]) # 输出: 1
print(my_tuple[-1]) # 输出: 'hello'
- 切片
与列表类似,元组也支持切片操作。例如:
my_tuple = (1, 2, 3, 'hello')
print(my_tuple[1:3]) # 输出: (2, 3)
print(my_tuple[:2]) # 输出: (1, 2)
print(my_tuple[-2:]) # 输出: (3, 'hello')
print(my_tuple[::2]) # 输出: (1, 3)
- 元组的不可变性
元组和列表最大的区别就是元组是不可变的,也就是说一旦创建元组就无法修改它的元素。如果试图对元组进行修改操作,会抛出 TypeError。
my_tuple = (1, 2, 3, 'hello')
my_tuple[1] = 'world' # 抛出 TypeError
- 应用场景
元组虽然不像列表那样灵活,但由于它们是不可变的,因此在某些情况下使用起来更加方便和安全。例如:
- 当函数需要返回多个值时,可以使用元组作为返回值。
- 元组可以作为字典的键,而列表不行(因为字典键必须是不可变类型)。
- 如果要定义一个常量序列,并确保该序列不能被修改,则可以使用元组。
(3)集合
集合(Set)是一种无序的、不重复的数据类型,用于存储多个元素。下面是关于 Python 集合的一些常用知识点:
- 创建集合
创建集合有两种方式,一种是使用花括号 {},例如:
my_set = {1, 2, 3, 4}
另一种是使用内置函数 set(),例如:
my_set = set([1, 2, 3, 4])
注意,如果要创建空集合,则必须使用 set() 函数而不能使用 {},因为 {} 创建的是空字典。
- 访问集合
由于集合是无序的,因此不能使用索引来访问集合中的元素。我们只能使用 for 循环遍历集合或者使用 in 关键字判断一个元素是否在集合中存在。
my_set = {1, 2, 3, 4}
for item in my_set:
print(item) # 输出: 1, 2, 3, 4
print(1 in my_set) # 输出: True
- 更新集合
我们可以向集合中添加元素,也可以从集合中删除元素。
3.1 添加元素
- add(item):向集合中添加一个元素。
- update(iterable):向集合中添加迭代器中的所有元素。
my_set.add(5)
my_set.update({6, 7})
print(my_set) # 输出: {1, 2, 3, 4, 5, 6, 7}
3.2 删除元素
- remove(item):从集合中删除指定元素,如果该元素不存在,则抛出 KeyError 异常。
- discard(item):从集合中删除指定元素,如果该元素不存在,则什么都不做。
- pop():随机删除集合中的一个元素并返回该元素,如果集合为空则抛出 KeyError 异常。
- clear():清空集合中的所有元素。
my_set.remove(1)
my_set.discard(8)
# 以下两个函数都会打印输出一个元素,但是输出的元素可能不一样
print(my_set.pop())
my_set.clear()
- 集合运算
集合支持多种运算操作,如求并集、交集、差集等。
set1 = {1, 2, 3}
set2 = {3, 4, 5} # 求并集
print(set1 | set2) # 输出: {1, 2, 3, 4, 5}
print(set1.union(set2)) # 输出: {1, 2, 3, 4, 5} # 求交集
print(set1 & set2) # 输出: {3}
print(set1.intersection(set2)) # 输出: {3} # 求差集
print(set1 - set2) # 输出: {1, 2}
print(set1.difference(set2)) # 输出: {1, 2}
(4)字典
字典(Dictionary)是一种无序的键值对(key-value)结构,用于存储多个元素。下面是关于 Python 字典的一些常用知识点:
- 创建字典
创建字典有两种方式,一种是使用花括号 {},例如:
my_dict = {"name": "Tom", "age": 18}
另一种是使用内置函数 dict(),例如:
my_dict = dict(name="Tom", age=18)
- 访问字典
我们可以通过 key 来访问字典中对应的 value 值。
my_dict = {"name": "Tom", "age": 18}
print(my_dict["name"]) # 输出: Tom
print(my_dict.get("name")) # 输出: Tom
其中,get() 方法会默认返回 None 值,如果字典中不存在对应的 key,则不会抛出异常。
- 更新字典
我们可以向字典中添加、删除或修改元素。
3.1 添加元素
通过给指定 key 赋值的方式来添加新元素。
my_dict = {"name": "Tom", "age": 18}
my_dict["gender"] = "Male"
print(my_dict) # 输出: {'name': 'Tom', 'age': 18, 'gender': 'Male'}
3.2 修改元素
同样是通过给指定 key 赋值的方式,只不过此时 key 已经存在。
my_dict = {"name": "Tom", "age": 18}
my_dict["name"] = "Jerry"
print(my_dict) # 输出: {'name': 'Jerry', 'age': 18}
3.3 删除元素
- pop(key):通过 key 删除对应的键值对,同时返回该值。
- del dict[key]:删除字典中指定 key 的元素。
- clear():清空字典中的所有元素。
my_dict = {"name": "Tom", "age": 18}
my_dict.pop("age")
del my_dict["name"]
my_dict.clear()
- 字典运算
字典支持多种常用运算操作,如判断一个 key 是否存在于字典中、获取字典中所有的 keys 或 values 等。
my_dict = {"name": "Tom", "age": 18, "gender": "Male"} # 判断是否存在某个 key
print("name" in my_dict) # 输出: True
# 获取所有 key 或所有 value
print(my_dict.keys()) # 输出: dict_keys(['name', 'age', 'gender'])
print(my_dict.values()) # 输出: dict_values(['Tom', 18, 'Male'])
# 获取所有键值对
print(my_dict.items()) # 输出: dict_items([('name', 'Tom'), ('age', 18), ('gender', 'Male')])
此致与君共勉