Python中的组合数据类型

153 阅读5分钟

序列和索引

序列

  • 序列是一个用于存储多个值的连续空间,每个值都对应一个整数的编号,称为索引
  • 序列结构主要有列表、元组、集合、字典和字符串

索引

  • 正向递增索引,取值范围:[0, N-1]
  • 反向递减索引,取值范围:[-1, -N] image.png

序列的相关操作

切片操作

  • 切片操作是访问序列元素的另一种方法,它可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。
  • 语法结构:[start:end:step]
  • 参数说明
    • start:表示切片开始的位置(包括开始位置),如果不指定,默认为 0
    • end:表示切片结束的位置(不包括结束位置),如果不指定,默认为序列的长度
    • step:表示步长,如果省略,默认为1,当省略步长时,最后一个冒号可以省略

列表及相关操作

序列的相加

  • 使用 “+” 实现两个同类型序列的相加操作,不会去除重复元素

image.png

注意事项:序列的类型要求是相同的,但是序列中元素的类型可以是不同的

序列的相乘

  • 使用数字n乘以一个序列,将生成一个新的序列,新序列中的内容会被重复n次

序列的相关操作符与函数

image.png

组合数据类型-列表

列表

  • 一系列的按特定顺序排列的元素组成
  • Python中内置的可变序列
  • 使用 [] 定义列表,元素之间使用逗号分隔
  • 元素可以是任意的数据类型

image.png

列表的创建

  • 使用 [] 直接创建列表:列表名 = [element1, element2, ...... elementN]
  • 使用内置方法 list() 创建列表:列表名 = list(序列)

列表的删除

  • del 列表名

列表元素的遍历

  • 使用遍历循环for
  • 遍历循环 forrange() 函数和 len() 函数组合遍历
  • 遍历循环 forenumerate() 函数组合遍历元素和索引

image.png

index:用于保存元素的索引(序号)
item:用于保存获取到的元素值

image.png

列表的相关操作方法

image.png

id(列表名) → 获取列表地址

列表排序

  • 列表对象的 sort() 方法
    • 对原列表中的元素进行排序,排序之后原列表中元素的顺序将发生改变 lst.sort(key = None, reverse = False)
  • 内置的 sorted() 函数
    • 使用 sorted() 函数排序后,原列表元素顺序不变,排序后产生一个新的列表对象 sorted(iterable, key = None, reverse = False)

列表生成式(列表推导式)

  • 生成指定范围的数值列表:lst = [expression for item in range] image.png
  • 从列表中选择符合条件的元素组成新的列表:lst = [expression for item in 列表 if condition] image.png

二维列表

  • 二位列表也称表格数据,由行和列组成

image.png

image.png

元组

  • 由一系列按特定顺序排列的元素组成
  • Python 中的不可变序列
  • 使用 () 定义,元素之间使用逗号分隔
  • 元组中的元素可以是任意数据类型

元组的创建、删除遍历元素等操作

元组的创建

  • 使用 () 直接创建元组
  • 使用内置函数 tuple() 创建元组

元组的删除

  • del 元组名

image.png

image.png

元组当中只有一个元素,逗号不能省略

元组的访问和遍历

image.png

image.png

image.png

image.png

元组生成式

  • 与列表生成式的语法相同
  • 元组生成式的结果是一个生成器对象,需要转换成元组或列表才能查看到元素内容
  • 生成器遍历之后,再想重新遍历必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了

元组和列表的区别

image.png

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)

组合数据类型-字典

键值对

  • 根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引用的键和对应的值构成的成对关系

image.png

字典的特征

  • 通过键从字典中获取指定的项,但不能通过索引来获取
  • 字典是无序的,也被称为 hash表(散列表)
  • 是 Python 中的可变序列
  • 字典中的键必须唯一,如果出现两次,后出现的将覆盖先出现的
  • 字典中的键要求是不可变序列

字典的创建

  • 使用 {} 直接创建字典
    • d={key1:value1, key2:value2......}
  • 使用内置函数 dict() 创建字典
    • 通过映射函数创建字典 zip(lst1,lst2)
    • 通过给定关键字创建字典 dict(key1=value1, key2=value2......)

image.png

image.png

image.png

字典及相关操作

image.png

字典元素的访问

d[key]
# 或
d.get(key)

二者间的区别

image.png

字典元素的遍历

for element in d.items():
    pass
    
for key, value in d.items():
    pass

image.png

字典的相关操作方法

image.png

image.png

image.png

image.png

image.png

image.png

image.png

字典生成式

  • 使用指定范围的数作 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)
    

image.png

集合的删除

  • del 集合名

集合类型的操作符

image.png

A = {10, 20, 30, 40, 50}
B = {30, 50, 70, 90, 99}

# 交集操作
print(A & B)

# 并集操作
print(A | B)

# 差集操作
print(A - B)

# 补集操作
print(A ^ B)

集合的相关操作方法

image.png

集合的遍历

  • 使用遍历循环 for
  • 使用 for循环enumerate() 函数

image.png

集合生成式

image.png

列表、元组、字典和集合的区别

image.png