Repository navigation
Expand file tree
/
Copy path03_data_structures.py
More file actions
135 lines (98 loc) · 4.17 KB
/
Copy path03_data_structures.py
File metadata and controls
135 lines (98 loc) · 4.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# -*- coding: utf-8 -*-
# --- 第3章:数据结构 ---
# 数据结构是组织和存储数据的方式,以便更有效地访问和修改数据。
# Python 内置了几种非常常用的数据结构。
# --- 1. 列表 (List) ---
# 列表是可变的(可以修改),有序的集合。用方括号 [] 表示。
# 列表可以包含不同类型的数据。
my_list = [1, 2, 3, "apple", "banana", True]
print("原始列表:", my_list)
# 访问列表元素:通过索引(从0开始)
print("列表的第一个元素:", my_list[0])
print("列表的最后一个元素:", my_list[-1]) # 负数索引从末尾开始计数
# 修改列表元素
my_list[0] = 100
print("修改第一个元素后:", my_list)
# 添加元素
my_list.append("orange") # 在列表末尾添加
print("添加 'orange' 后:", my_list)
my_list.insert(1, "grape") # 在指定位置插入
print("在索引1处插入 'grape' 后:", my_list)
# 删除元素
my_list.remove("banana") # 删除指定值的第一个匹配项
print("删除 'banana' 后:", my_list)
popped_element = my_list.pop() # 删除并返回列表末尾的元素
print("弹出元素:", popped_element)
print("弹出后列表:", my_list)
del my_list[0] # 删除指定索引的元素
print("删除索引0的元素后:", my_list)
# 列表切片 (Slicing): 获取列表的一部分
sub_list = my_list[1:3] # 从索引1到索引3(不包括3)
print("列表切片 (索引1到3):", sub_list)
# 列表长度
print("列表的长度:", len(my_list))
# --- 2. 元组 (Tuple) ---
# 元组是不可变的(不能修改),有序的集合。用圆括号 () 表示。
# 一旦创建,元组的元素就不能被改变。
my_tuple = (10, 20, "cherry", False)
print("原始元组:", my_tuple)
# 访问元组元素:与列表类似,通过索引
print("元组的第一个元素:", my_tuple[0])
# 尝试修改元组元素会报错 (TypeError)
# my_tuple[0] = 100 # 这行代码会引发错误
# 元组的长度
print("元组的长度:", len(my_tuple))
# --- 3. 字典 (Dictionary) ---
# 字典是无序的键值对 (key-value pairs) 集合。用花括号 {} 表示。
# 每个键(key)必须是唯一的,且通常是字符串或数字。
my_dict = {
"name": "Alice",
"age": 30,
"city": "New York"
}
print("原始字典:", my_dict)
# 访问字典元素:通过键
print("姓名:", my_dict["name"])
print("年龄:", my_dict.get("age")) # 使用 .get() 方法访问更安全,键不存在时返回 None 而不是报错
# 添加或修改字典元素
my_dict["occupation"] = "Engineer" # 添加新键值对
my_dict["age"] = 31 # 修改已有键的值
print("修改后字典:", my_dict)
# 删除字典元素
del my_dict["city"]
print("删除 'city' 后字典:", my_dict)
# 获取所有键、所有值、所有键值对
print("所有键:", my_dict.keys())
print("所有值:", my_dict.values())
print("所有键值对:", my_dict.items())
# 字典的长度
print("字典的长度:", len(my_dict))
# --- 4. 集合 (Set) ---
# 集合是无序的,不重复的元素集合。用花括号 {} 表示,或者用 set() 函数创建。
# 集合主要用于成员测试和消除重复元素。
my_set = {1, 2, 3, 3, 4, 5}
print("原始集合 (重复元素被自动移除):", my_set)
another_set = set([4, 5, 6, 6, 7]) # 从列表创建集合
print("另一个集合:", another_set)
# 添加元素
my_set.add(6)
print("添加元素6后:", my_set)
# 删除元素
my_set.remove(1) # 如果元素不存在会报错
print("删除元素1后:", my_set)
my_set.discard(10) # 如果元素不存在不会报错
print("尝试删除不存在的元素10后:", my_set)
# 集合操作:并集、交集、差集
set_union = my_set.union(another_set) # 并集
print("并集:", set_union)
set_intersection = my_set.intersection(another_set) # 交集
print("交集:", set_intersection)
set_difference = my_set.difference(another_set) # 差集 (my_set 中有但 another_set 中没有的)
print("差集:", set_difference)
# 集合的长度
print("集合的长度:", len(my_set))
# --- 章节总结 ---
# 1. 列表 (list): 有序,可变,用 []。
# 2. 元组 (tuple): 有序,不可变,用 ()。
# 3. 字典 (dict): 无序,键值对,用 {},键唯一。
# 4. 集合 (set): 无序,不重复元素,用 {} 或 set()。