变量进阶
1. 变量类型
在 Python 中,主要有以下几种常见的变量类型:
- 数字类型:
-
- 整数(int):用于表示整数值,如 1、-5、100 等。
- 浮点数(float):用于表示带有小数部分的数值,如 3.14、-2.5、0.0 等。
- 复数(complex):由实数部分和虚数部分组成,如 3 + 4j。
- 字符串类型(str):
-
- 用于表示文本数据,用单引号或双引号括起来,如
"Hello, World!"
、'Python is great!'
等。 - 字符串是不可变的,即一旦创建,其内容不能被修改。
- 用于表示文本数据,用单引号或双引号括起来,如
- 列表类型(list):
-
- 是一种可变的有序序列,可以包含不同类型的元素。
- 例如:
[1, 2, 3]
、["apple", "banana", "orange"]
、[1, "two", 3.5]
等。
- 元组类型(tuple):
-
- 是一种不可变的有序序列,可以包含不同类型的元素。
- 例如:
(1, 2, 3)
、("apple", "banana", "orange")
等。
- 字典类型(dict):
-
- 用于存储键值对的数据结构,通过键来访问对应的值。
- 例如:
{"name": "John", "age": 30}
等。
- 集合类型(set):
-
- 是一种无序的、不包含重复元素的数据结构。
- 例如:
{1, 2, 3}
、{"apple", "banana", "orange"}
等。
2. 列表(list)
- 定义和特点:
-
- 列表是用方括号
[]
括起来的一组元素,可以包含不同类型的元素。 - 列表是可变的,意味着可以添加、删除或修改其中的元素。
- 列表中的元素是有序的,可以通过索引访问特定位置的元素。
- 列表是用方括号
- 常见操作:
-
- 索引和切片:可以通过索引访问列表中的单个元素,索引从 0 开始。也可以使用切片操作获取列表的一部分。
-
-
- 例如:
my_list = [1, 2, 3, 4, 5]
,my_list[2]
返回 3,my_list[1:4]
返回[2, 3, 4]
。
- 例如:
-
-
- 添加元素 :可以使用
append()
方法在列表末尾添加一个元素,使用extend()
方法将另一个列表的元素添加到当前列表中,使用insert()
方法在指定位置插入一个元素。
- 添加元素 :可以使用
-
-
- 例如:
my_list.append(6)
,my_list.extend([7, 8])
,my_list.insert(2, 9)
。
- 例如:
-
-
- 删除元素 :可以使用
remove()
方法删除指定值的元素,使用pop()
方法删除并返回指定位置的元素,使用del
语句删除指定位置的元素。
- 删除元素 :可以使用
-
-
- 例如:
my_list.remove(3)
,removed_element = my_list.pop(1)
,del my_list[2]
。
- 例如:
-
-
- 排序 :可以使用
sorted()
函数对列表进行排序并返回一个新的列表,或者使用sort()
方法直接在原列表上进行排序。
- 排序 :可以使用
-
-
- 例如:
sorted_list = sorted(my_list)
,my_list.sort()
。
- 例如:
-
3. 公共方法
公共方法是适用于多种数据类型的通用操作方法。以下是一些常见的公共方法:
- len()函数:
-
- 返回对象的长度(元素个数)。
- 例如:
len([1, 2, 3])
返回 3,len("Hello")
返回 5。
max()
和min()
函数:
-
- 分别返回可迭代对象中的最大值和最小值。
- 例如:
max([3, 5, 2])
返回 5,min("abc")
返回"a"
。
sum()
函数(仅适用于数字序列):
-
- 返回可迭代对象中所有元素的总和。
- 例如:
sum([1, 2, 3])
返回 6。
enumerate()
函数:
-
- 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。
- 例如:
for index, value in enumerate(["apple", "banana", "orange"]):
,会依次输出索引和对应的值。
4. 元组(tuple)
- 定义和特点:
-
- 元组是用圆括号
()
括起来的一组元素,可以包含不同类型的元素。 - 元组是不可变的,一旦创建,其内容不能被修改。
- 元组中的元素是有序的,可以通过索引访问特定位置的元素。
- 元组是用圆括号
- 常见操作:
-
- 索引和切片:与列表类似,可以通过索引访问元组中的单个元素,也可以使用切片操作获取元组的一部分。
-
-
- 例如:
my_tuple = (1, 2, 3, 4, 5)
,my_tuple[2]
返回 3,my_tuple[1:4]
返回(2, 3, 4)
。
- 例如:
-
-
- 解包:可以将元组中的元素分别赋值给多个变量。
-
-
- 例如:
a, b, c = (1, 2, 3)
,此时a
的值为 1,b
的值为 2,c
的值为 3。
- 例如:
-
5. 集合(set)的使用
- 定义和特点:
-
- 集合是一种无序的、不包含重复元素的数据结构。用花括号
{}
或set()
函数来创建集合。 - 例如:
my_set = {1, 2, 3}
或my_set = set([1, 2, 3])
。
- 集合是一种无序的、不包含重复元素的数据结构。用花括号
- 常见操作:
-
- 添加元素 :使用
add()
方法添加单个元素,使用update()
方法添加多个元素。
- 添加元素 :使用
-
-
- 例如:
my_set.add(4)
,my_set.update([5, 6])
。
- 例如:
-
-
- 删除元素 :使用
remove()
方法删除指定元素,如果元素不存在会引发错误;使用discard()
方法删除指定元素,如果元素不存在不会引发错误。
- 删除元素 :使用
-
-
- 例如:
my_set.remove(3)
,my_set.discard(4)
。
- 例如:
-
-
- 集合运算:可以进行并集、交集、差集等运算。
-
-
- 例如:
-
-
-
-
- 并集:
set1 | set2
或set1.union(set2)
。 - 交集:
set1 & set2
或set1.intersection(set2)
。 - 差集:
set1 - set2
或set1.difference(set2)
。
- 并集:
-
-
6. 循环遍历字典
- 遍历键:
-
-
使用
keys()
方法获取字典的所有键,然后进行遍历。 -
例如:
my_dict = {"name": "Alice", "age": 30, "city": "New York"}
for key in my_dict.keys():
print(key)
-
- 遍历值:
-
-
使用
values()
方法获取字典的所有值,然后进行遍历。 -
例如:
for value in my_dict.values():
print(value)
-
- 遍历键值对:
-
-
使用
items()
方法获取字典的所有键值对,然后进行遍历。每一对键值对以元组的形式返回。 -
例如:
for key, value in my_dict.items():
print(f"{key}: {value}")
-
7. 字典中读取键和值的方法
- 通过键获取值:
-
- 使用方括号
[]
或get()
方法。 - 例如:
value = my_dict["name"]
或value = my_dict.get("name")
。如果键不存在,方括号会引发KeyError
错误,而get()
方法会返回None
(可以指定默认值)。
- 使用方括号
- 检查键是否存在:
-
- 使用
in
关键字或not in
关键字。 - 例如:
if "name" in my_dict:
或if "name" not in my_dict:
。
- 使用
8. for
循环遍历字符串
- 遍历每个字符:
-
-
可以直接对字符串进行遍历,每次循环会得到一个字符。
-
例如:
my_string = "Hello"
for char in my_string:
print(char)
-
9. 字符串的常用方法
- 查找方法:
-
find()
:查找子字符串在字符串中的首次出现位置,如果找不到则返回 -1。index()
:与find()
类似,但如果找不到子字符串会引发ValueError
错误。- 例如:
my_string = "Hello, World!"
,my_string.find("World")
返回 7,my_string.index("Hello")
返回 0。
- 分割方法:
-
split()
:根据指定的分隔符将字符串分割成一个列表。- 例如:
my_string = "apple,banana,orange"
,my_string.split(",")
返回["apple", "banana", "orange"]
。
- 替换方法:
-
replace()
:将字符串中的一部分替换为另一个字符串。- 例如:
my_string = "Hello, World!"
,my_string.replace("World", "Python")
返回"Hello, Python!"
。
- 大小写转换方法:
-
upper()
:将字符串转换为大写。lower()
:将字符串转换为小写。capitalize()
:将字符串的首字母转换为大写,其余字母转换为小写。- 例如:
my_string = "hello, world!"
,my_string.upper()
返回"HELLO, WORLD!"
,my_string.lower()
返回"hello, world!"
,my_string.capitalize()
返回"Hello, world!"
。
10. 字符串切片
- 基本语法:
-
- 与列表切片类似,字符串切片的语法是
string[start:stop:step]
,其中start
表示起始索引(包含在切片结果中),stop
表示结束索引(不包含在切片结果中),step
表示步长(可选参数,默认为 1)。
- 与列表切片类似,字符串切片的语法是
- 示例:
-
- 例如:
my_string = "Hello, World!"
,my_string[7:12]
返回"World"
,my_string[::2]
返回"Hlo ol!"
。
- 例如:
11. 多维列表
在 Python 中,多维列表是指包含一个或多个嵌套列表的列表结构,可以用来表示多维数组或矩阵等数据结构。
11.1. 定义和创建多维列表
- 直接赋值法:
-
- 可以通过直接在方括号中嵌套方括号来创建多维列表。
- 例如,创建一个 2x2 的二维列表:
matrix = [[1, 2], [3, 4]]
。 - 这里
matrix
是一个包含两个子列表的列表,每个子列表又包含两个元素,相当于一个 2x2 的矩阵。
- 循环创建法:
-
-
可以使用循环来动态地创建多维列表。
-
例如,创建一个 3x3 的二维列表,初始值都为 0:
matrix = []
for i in range(3):
row = []
for j in range(3):
row.append(0)
matrix.append(row)
-
-
- 这段代码首先创建一个空列表
matrix
,然后通过两层循环分别创建每一行的列表,并将其添加到matrix
中。
- 这段代码首先创建一个空列表
11.2. 访问多维列表中的元素
- 索引访问:
-
- 多维列表中的元素可以通过多个索引来访问。
- 例如,对于上面创建的
matrix
列表,matrix[1][2]
表示访问第二行第三列的元素(索引从 0 开始)。
- 遍历多维列表:
-
-
可以使用嵌套的循环来遍历多维列表中的每个元素。
-
例如,遍历上面的
matrix
列表并输出每个元素:for row in matrix:
for element in row:
print(element, end=' ')
print()
-
-
- 这段代码首先遍历每一行的列表,然后在每一行中遍历每个元素并输出。
11.3. 多维列表的应用场景
- 表示矩阵和二维数据:
-
- 多维列表可以很方便地表示矩阵和二维数据结构。例如,在图像处理中,可以用多维列表来表示图像的像素值;在游戏开发中,可以用多维列表来表示游戏地图等。
- 存储和处理多维数据:
-
- 当需要处理多维数据时,多维列表可以提供一种灵活的数据结构。例如,在数据分析中,可以用多维列表来存储和处理多维数据集;在机器学习中,可以用多维列表来表示特征矩阵等。
- 动态数据结构:
-
- 由于多维列表是可变的,可以根据需要动态地添加、删除或修改元素,因此在需要动态数据结构的场景中非常有用。例如,可以用多维列表来表示动态的游戏场景或数据表格等。