在 Python 中,**序列(sequence)**是一个包含多个元素的数据结构,序列中的元素按顺序排列,并且可以通过索引访问。常见的序列类型包括字符串(str
)、列表(list
)、元组(tuple
)、范围(range
)等。序列的基本特点是:它们都支持索引、切片操作,允许遍历,并且可以包含重复的元素。
Python 中的常见序列类型
-
字符串(
str
): 包含字符的不可变序列。my_str = "hello"
-
列表(
list
): 可变的序列,可以添加、删除或修改元素。my_list = [1, 2, 3, 4]
-
元组(
tuple
): 不可变的序列,类似于列表,但其元素不能被修改。my_tuple = (1, 2, 3, 4)
-
范围(
range
): 表示不可变的整数序列,通常用于循环。my_range = range(5) # 等价于 (0, 1, 2, 3, 4)
序列的常见操作
无论是字符串、列表、元组还是范围,它们都共享一些通用的操作方式。
1. 索引
序列中的每个元素都有一个位置(即索引),可以通过索引访问特定的元素。索引从 0
开始,负数索引用于从后往前访问。
my_list = [10, 20, 30, 40]
print(my_list[1]) # 输出:20
print(my_list[-1]) # 输出:40
2. 切片
切片是获取序列中的子序列的操作,格式为 序列[start:end:step]
,其中 start
是起始索引,end
是结束索引(不包含),step
是步长。
my_list = [10, 20, 30, 40, 50]
print(my_list[1:4]) # 输出:[20, 30, 40]
print(my_list[:3]) # 输出:[10, 20, 30]
print(my_list[::2]) # 输出:[10, 30, 50]
3. 序列拼接
使用 +
运算符可以拼接两个序列。
my_list = [1, 2] + [3, 4]
print(my_list) # 输出:[1, 2, 3, 4]
my_str = "Hello, " + "World!"
print(my_str) # 输出:"Hello, World!"
4. 重复序列
使用 *
运算符可以重复序列中的元素。
my_list = [1, 2] * 3
print(my_list) # 输出:[1, 2, 1, 2, 1, 2]
my_str = "Hi! " * 2
print(my_str) # 输出:"Hi! Hi! "
5. 成员资格测试
使用 in
或 not in
检查某个元素是否存在于序列中。
my_list = [10, 20, 30]
print(20 in my_list) # 输出:True
print(40 not in my_list) # 输出:True
6. 长度、最小值、最大值、总和
对于数值序列,可以使用以下内置函数进行操作:
-
len()
:返回序列的长度。 -
min()
:返回序列中的最小值。 -
max()
:返回序列中的最大值。 -
sum()
:返回序列中元素的总和(仅适用于数值序列)。
my_list = [10, 20, 30]
print(len(my_list)) # 输出:3
print(min(my_list)) # 输出:10
print(max(my_list)) # 输出:30
print(sum(my_list)) # 输出:60
7. 遍历序列
可以使用 for
循环遍历序列中的每个元素。
my_list = [10, 20, 30]
for item in my_list:
print(item)
8. 索引方法
使用 index()
方法可以找到元素在序列中的索引(第一次出现的位置)。
my_list = [10, 20, 30, 20]
print(my_list.index(20)) # 输出:1
9. 计数方法
使用 count()
方法可以统计某个元素在序列中出现的次数。
my_list = [10, 20, 30, 20]
print(my_list.count(20)) # 输出:2
10. 排序(仅限列表)
列表是可变的序列,可以使用 sort()
方法进行排序(就地排序),或者使用 sorted()
函数返回一个新的排序后的列表。
my_list = [30, 10, 20]
my_list.sort()
print(my_list) # 输出:[10, 20, 30]
new_list = sorted(my_list, reverse=True)
print(new_list) # 输出:[30, 20, 10]
11. 序列的反转
- 使用
[::-1]
可以反转一个序列。 - 列表还可以使用
reverse()
方法就地反转。
my_list = [10, 20, 30]
print(my_list[::-1]) # 输出:[30, 20, 10]
my_list.reverse()
print(my_list) # 输出:[30, 20, 10]
完整示例
# 定义序列
my_list = [10, 20, 30, 40, 50]
# 访问元素和切片
print(my_list[0]) # 输出:10
print(my_list[1:3]) # 输出:[20, 30]
# 拼接和重复序列
new_list = my_list + [60, 70]
print(new_list) # 输出:[10, 20, 30, 40, 50, 60, 70]
repeated_list = my_list * 2
print(repeated_list) # 输出:[10, 20, 30, 40, 50, 10, 20, 30, 40, 50]
# 成员资格测试
print(30 in my_list) # 输出:True
# 长度、最小值、最大值和总和
print(len(my_list)) # 输出:5
print(min(my_list)) # 输出:10
print(max(my_list)) # 输出:50
print(sum(my_list)) # 输出:150
# 遍历
for item in my_list:
print(item)
# 索引和计数
print(my_list.index(30)) # 输出:2
print(my_list.count(20)) # 输出:1
# 排序和反转
sorted_list = sorted(my_list)
print(sorted_list) # 输出:[10, 20, 30, 40, 50]
my_list.reverse()
print(my_list) # 输出:[50, 40, 30, 20, 10]
总结
Python 中的序列类型提供了一系列强大且灵活的操作方法,使得它们非常适合用于处理有序的数据。无论是索引、切片、拼接,还是排序和遍历,序列都为开发者提供了丰富的操作手段来处理各种场景中的数据。