python教程:python中的序列及其对序列的操作

在 Python 中,**序列(sequence)**是一个包含多个元素的数据结构,序列中的元素按顺序排列,并且可以通过索引访问。常见的序列类型包括字符串(str)、列表(list)、元组(tuple)、范围(range)等。序列的基本特点是:它们都支持索引、切片操作,允许遍历,并且可以包含重复的元素。

Python 中的常见序列类型

  1. 字符串(str): 包含字符的不可变序列。

    my_str = "hello"
    
  2. 列表(list): 可变的序列,可以添加、删除或修改元素。

    my_list = [1, 2, 3, 4]
    
  3. 元组(tuple): 不可变的序列,类似于列表,但其元素不能被修改。

    my_tuple = (1, 2, 3, 4)
    
  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. 成员资格测试

使用 innot 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 中的序列类型提供了一系列强大且灵活的操作方法,使得它们非常适合用于处理有序的数据。无论是索引、切片、拼接,还是排序和遍历,序列都为开发者提供了丰富的操作手段来处理各种场景中的数据。

上一篇:从算盘到云计算:计算机发展的壮丽历程


下一篇:[论文笔记] llama-factory 微调qwen2.5、llama3踩坑