一、数据结构
Python提供了多种内置的数据结构,这些数据结构在编程中非常有用。以下是Python中常见的一些数据结构:
- 列表(List):
列表是Python中最常用的数据结构之一,它是一个有序的集合,可以包含任意类型的对象,包括数字、字符串、元组、列表等。列表是可变的,意味着你可以修改、添加或删除列表中的元素。
my_list = [1, 2, 3, "four", 5.5]
my_list.append(6) # 添加元素
my_list.remove(3) # 删除元素
方法
|方法| 描述|
|-------|-------|
list.append(x)| 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.extend(L)| 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。
list.insert(i, x)| 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x)| 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i])| 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()|返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)
list.clear()| 移除列表中的所有项,等于del a[:]。
list.index(x)| 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x)| 返回 x 在列表中出现的次数。
list.sort()| 对列表中的元素进行排序。
list.reverse()| 倒排列表中的元素。
list.copy()| 返回列表的浅复制,等于a[:]。
- 元组(Tuple):
元组与列表类似,也是一个有序的集合,但它是不可变的。一旦元组被创建,就不能修改它的内容。元组通常用于存储不需要修改的数据。
创建元组
你可以使用圆括号 ()
来创建一个元组。元组中的元素之间用逗号分隔。
# 创建一个包含整数的元组
my_tuple = (1, 2, 3)
# 创建一个包含不同类型元素的元组
mixed_Tuple = (1, "hello", 3.14)
# 创建一个空元组
empty_Tuple = ()
# 创建一个只有一个元素的元组(注意逗号的使用)
single_element_Tuple = (42,)
访问元组元素
你可以通过索引来访问元组中的元素。索引是从0开始的整数。
my_Tuple = (10, 20, 30, 40)
# 访问第一个元素
first_element = my_Tuple[0] # 输出: 10
# 访问最后一个元素
last_element = my_Tuple[-1] # 输出: 40
# 访问第三个元素
third_element = my_Tuple[2] # 输出: 30
元组操作
虽然元组是不可变的,但你还是可以对它们进行一些操作,如连接、重复、索引、切片等。
# 连接两个元组
tuple1 = (1, 2, 3)
Tuple2 = (4, 5, 6)
combined_Tuple = Tuple1 + Tuple2 # 输出: (1, 2, 3, 4, 5, 6)
# 重复一个元组
repeated_Tuple = Tuple1 * 2 # 输出: (1, 2, 3, 1, 2, 3)
# 切片操作
sliced_Tuple = my_Tuple[1:3] # 输出: (20, 30)
# 检查元素是否在元组中
if 20 in my_Tuple:
print("20 is in the tuple")
# 获取元组长度
length = len(my_Tuple) # 输出: 4
元组与列表的比较
元组和列表非常相似,但主要的区别在于元组是不可变的,而列表是可变的。这意味着一旦你创建了一个元组,就不能修改它,而列表可以在任何时候被修改。
- 元组:不可变、用于存储不可变的数据集合、用作字典的键、因为不可变所以更安全。
- 列表:可变、用于存储可变的数据集合、不可以用作字典的键、因为可变所以更加灵活。
元组的用途
- 当你需要一个不会改变的数据集合时,可以使用元组。
- 元组常用于表示一系列相关的值,例如坐标点(x, y)。
- 因为元组是不可变的,所以它们经常用作字典的键。
- 当函数需要返回多个值时,元组是一个很好的选择。
虽然元组是不可变的,但你可以通过元组解包(tuple unpacking)来轻松地将元组中的值赋给变量。
x, y, z = (1, 2, 3)
print(x) # 输出: 1
print(y) # 输出: 2
print(z) # 输出: 3
更多详细介绍,可了解下我的另一篇文章
「Python系列」Python元组
- 字典(Dictionary):
字典是一个无序的键值对集合。每个键在字典中都是唯一的,通过键可以快速地访问、添加或删除对应的值。
my_dict = {
"name": "Alice", "age": 25, "city": "New York"}
print(my_dict["name"]) # 输出: Alice
my_dict["country"] = "USA" # 添加键值对
del my_dict["age"] # 删除键值对
- 集合(Set):
集合是一个无序且不包含重复元素的集合。集合通常用于成员关系测试和消除重复元素。
my_set = {
1, 2, 3, 3, 4} # 重复的元素会被自动移除
my_set.add(5) # 添加元素
my_set.remove(2) # 删除元素
- 字符串(String):
虽然字符串在Python中是不可变的,但它们仍然是一种非常重要的数据结构。字符串是由字符组成的序列,可以用于表示文本信息。
my_string = "Hello, World!"
print(my_string[0]) # 输出: H
# my_string[0] = 'h' # 这行代码会报错,因为字符串是不可变的
- 自定义数据结构:
除了内置的数据结构外,你还可以使用类(Class)来定义自己的数据结构。例如,你可以创建一个类来表示一个二维点,包含x和y坐标。
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
print(p.x, p.y) # 输出: 1 2
这些数据结构提供了强大的功能,可以帮助你更有效地组织和操作数据。每种数据结构都有其适用的场景和优缺点,因此选择正确的数据结构对于编写高效和可维护的代码至关重要。