序列和索引
序列
- 序列是一个用于存储多个值的连续空间,每个值都对应一个整数的编号,称为索引
- 序列结构主要有列表、元组、集合、字典和字符串
索引
- 正向递增索引,取值范围:[0, N-1]
- 反向递减索引,取值范围:[-1, -N]
序列的相关操作
切片操作
- 切片操作是访问序列元素的另一种方法,它可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。
- 语法结构:[start:end:step]
- 参数说明
- start:表示切片开始的位置(包括开始位置),如果不指定,默认为 0
- end:表示切片结束的位置(不包括结束位置),如果不指定,默认为序列的长度
- step:表示步长,如果省略,默认为1,当省略步长时,最后一个冒号可以省略
列表及相关操作
序列的相加
- 使用 “+” 实现两个同类型序列的相加操作,不会去除重复元素
注意事项:序列的类型要求是相同的,但是序列中元素的类型可以是不同的
序列的相乘
- 使用数字n乘以一个序列,将生成一个新的序列,新序列中的内容会被重复n次
序列的相关操作符与函数
组合数据类型-列表
列表
- 一系列的按特定顺序排列的元素组成
- Python中内置的可变序列
- 使用 [] 定义列表,元素之间使用逗号分隔
- 元素可以是任意的数据类型
列表的创建
- 使用 [] 直接创建列表:
列表名 = [element1, element2, ...... elementN] - 使用内置方法 list() 创建列表:
列表名 = list(序列)
列表的删除
del 列表名
列表元素的遍历
- 使用遍历循环for
- 遍历循环 for 与 range() 函数和 len() 函数组合遍历
- 遍历循环 for 与 enumerate() 函数组合遍历元素和索引
index:用于保存元素的索引(序号)
item:用于保存获取到的元素值
列表的相关操作方法
id(列表名) → 获取列表地址
列表排序
- 列表对象的 sort() 方法
- 对原列表中的元素进行排序,排序之后原列表中元素的顺序将发生改变
lst.sort(key = None, reverse = False)
- 对原列表中的元素进行排序,排序之后原列表中元素的顺序将发生改变
- 内置的 sorted() 函数
- 使用 sorted() 函数排序后,原列表元素顺序不变,排序后产生一个新的列表对象
sorted(iterable, key = None, reverse = False)
- 使用 sorted() 函数排序后,原列表元素顺序不变,排序后产生一个新的列表对象
列表生成式(列表推导式)
- 生成指定范围的数值列表:
lst = [expression for item in range] - 从列表中选择符合条件的元素组成新的列表:
lst = [expression for item in 列表 if condition]
二维列表
- 二位列表也称表格数据,由行和列组成
元组
- 由一系列按特定顺序排列的元素组成
- Python 中的不可变序列
- 使用 () 定义,元素之间使用逗号分隔
- 元组中的元素可以是任意数据类型
元组的创建、删除遍历元素等操作
元组的创建
- 使用 () 直接创建元组
- 使用内置函数 tuple() 创建元组
元组的删除
del 元组名
元组当中只有一个元素,逗号不能省略
元组的访问和遍历
元组生成式
- 与列表生成式的语法相同
- 元组生成式的结果是一个生成器对象,需要转换成元组或列表才能查看到元素内容
- 生成器遍历之后,再想重新遍历必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了
元组和列表的区别
t = (i for i in range(1, 10)) # 结果是一个生成器对象
print(t)
# for item in t:
# print(item)
# __next__() 方法
print(t.__next__())
print(t.__next__())
print(t.__next__())
t = tuple(t)
print(t)
组合数据类型-字典
键值对
- 根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引用的键和对应的值构成的成对关系
字典的特征
- 通过键从字典中获取指定的项,但不能通过索引来获取
- 字典是无序的,也被称为 hash表(散列表)
- 是 Python 中的可变序列
- 字典中的键必须唯一,如果出现两次,后出现的将覆盖先出现的
- 字典中的键要求是不可变序列
字典的创建
- 使用 {} 直接创建字典
d={key1:value1, key2:value2......}
- 使用内置函数 dict() 创建字典
- 通过映射函数创建字典
zip(lst1,lst2) - 通过给定关键字创建字典
dict(key1=value1, key2=value2......)
- 通过映射函数创建字典
字典及相关操作
字典元素的访问
d[key]
# 或
d.get(key)
二者间的区别
字典元素的遍历
for element in d.items():
pass
for key, value in d.items():
pass
字典的相关操作方法
字典生成式
- 使用指定范围的数作 key
d = {key:value for item in range} - 使用映射函数生成字典
d = {key:value for key, value in zip(lst1, lst2)}
组合数据类型-集合
集合
- Python中的集合与数学中的集合的概念一致
- 集合可分为可变集合 set 与不可变集合 frozenset
- 集合与字典中的 key 一致都是无序的
- 集合中的元素要求唯一
- 集合中只能存储不可变数据类型(字符串、整数、浮点数、元组)
- 集合使用 {} 定义,元素之间使用逗号进行分隔
集合的创建
- 使用 {} 直接创建集合
s = {元素1, 元素2, ......, 元素N}s1 = {10, 20, 30, 40} # 集合 s2 = {10: "ivan", 20: "chen", 30: "malou", 40: "jack"} # 字典 print(s1, type(s1)) print(s2, type(s2)) - 使用内置函数 set() 创建集合
s = set(可迭代对象)s = set("helloworld") # 去重 s2 = set([10, 20, 30]) s3 = set(range(1, 10)) print(s) print(s2) print(s3)
集合的删除
del 集合名
集合类型的操作符
A = {10, 20, 30, 40, 50}
B = {30, 50, 70, 90, 99}
# 交集操作
print(A & B)
# 并集操作
print(A | B)
# 差集操作
print(A - B)
# 补集操作
print(A ^ B)
集合的相关操作方法
集合的遍历
- 使用遍历循环 for
- 使用 for循环 和 enumerate() 函数