复合数据类型之列表、元组、字典以及集合

139 阅读4分钟

一. 元组(tuple)

创建元组对象

基本特性:

序列类型,类似一维数组,元素不可变,元素可存储不同类型数据。

创建方式:

  • 逗号分隔:A = x1, x2, x3, …, xn
  • 圆括号 + 逗号:A = (x1, x2, x3, …, xn)
  • 嵌套元组:元素为元组,如 A = (tuple1, tuple2, …)

类型转换:

可以使用 tuple() 函数将其他序列或迭代器类型将对象转换为元组对象。

元素访问:

通过成对出现的方括号 [] 访问元组元素,元组第一个元素的索引是0。

元素不可变特性:

元组元素本身不可直接赋值修改,但如果元素是列表,可通过列表的方法(如 append())间接修改列表内容,从而“改变”元组(实际是修改列表元素,元组指向的列表对象被修改)。

常用运算:

  • 拼接:用 + 运算符拼接多个元组,如 C = A + B
  • 重复:用 * 运算符将元组与整数相乘,如 B = n * A(将元组 A 重复 n 次拼接)
  • 统计:用 count() 方法统计指定值在元组中出现的次数。

二. 列表(list

创建列表对象

创建方式:

  • 方括号 + 逗号:A = [x1, x2, x3, …, xn]

类型转换:

使用 list() 函数将其他序列或迭代器对象转换为列表对象。

元素操作:

  • 访问:通过方括号 [] 访问,索引从 0 开始
  • 赋值修改:可直接用等号 = 对列表元素重新赋值(元组无此特性)
  • 追加:append() 方法将元素添加到列表末尾
  • 插入:insert(index, value) 方法在指定索引位置插入元素
  • 删除: pop(index) 移除指定索引的元素
  • remove(value) 删除列表中第一个等于指定值的元素

常用操作:

  • 成员判断:用 innot in 关键字判断列表是否包含某个值
  • 拼接:用 + 运算符拼接多个列表,如 C = A + B
  • 排序:sort() 方法对列表元素排序,可通过 reverse 参数(布尔值)设置逆序,或通过 key 参数指定排序标准(如 key=len 按字符串长度排序)

序列的切片操作:

  • 语法格式A[s:t:v],其中 s 是起始索引,t 是结束索引(不包含),v 是步长(默认 1
  • 省略规则:省略 s 则从序列开头开始;省略 t 则到序列末尾结束;步长 v 为正需满足 s < t,为负需满足 s > t
  • 赋值操作:可通过切片为序列元素重新赋值,如 aList[3:5] = ("Lucy","Lily")

三. 字典(dict

创建字典对象

创建方式:

  • 空字典:dict(){}
  • 非空字典:大括号内用冒号 : 分隔键值对、逗号 , 分隔不同键值对,如 {"姓名":"王小二","年龄":"18"}

序列构造:

使用 zip() 函数和dict()函数,使用这两个序列创建一个字典,即字典对象的键值对是这两个序列的元素。

键的特性:

键必须是不可变数据类型(如整数、元组),可用 hash() 函数判断对象是否可以作为字典的键,如果该对象不可以作为字典的键,则会出现错误提示。

操作键值对:

  • 访问值:通过调用键来访问对应的值
  • 合并字典:A.update(B) 将字典 B 合并到 A
  • 添加键值对:直接为新键赋值

常用函数:

  • 删除键值对:del 字典[键]pop(键)pop 返回对应值)
  • 成员判断:in 关键字判断字典是否包含某键
  • 键/值列表:keys()values() 方法输出由键或值组成的列表 注意: del关键字删除键值时,需指明需要删除元素的键

四. 集合(set

创建集合对象

创建方式:

  • 大括号:{1,2,3}(注意:{} 是空字典,非空集合需含元素)
  • set() 函数:参数为列表、元组等序列类型,如 bSet = set([43,'城市', 43,'邮编'])(自动去重)

核心特性:

元素无序且唯一(自动去重)

集合运算:

运算符使用方法函数表示说明
1A1BA.union(B)并集(A 和 B 所有元素)
&A&BA.intersection(B)交集(A 和 B 共有的元素)
-A-BA.difference(B)差集(A 中去掉 A&B 的元素)
^A^BA.symmetric_difference(B)对称差集(A和B的并集中去掉A和B的交集元素)

关系判断与修改:

  • 使用函数issubset() 判断一个集合是否是另外一个集合的子集
  • 使用函数issuperset() 判断一个集合是否是另外一个集合的超集
  • 使用连续两个等号“==”判断两个集合是否相等

修改集合:

  • 使用add()方法为集合添加元素
  • 使用remove() 删除集合的元素