详细基础教程——Python复合类型(2)——列表list、元组tuple、映射(字典)dict、集合set和固定集合frozenset

目录

一、列表list

1 列表创建

2 列表运算

3 列表访问

3.1 索引

3.1.1正向索引

3.1.2反向索引

3.2 切片

4 列表操作

4.1 添加数据 

4.2 修改数据

4.3 删除数据

4.4 复制数据

5 常见API

二、元组tuple

1 元组创建

2 元组操作

2.1 删除元组

2.2 查看元组

2.3 解包技能

3 元组运算

4 元组不可变

5 元组常用API

三、映射(字典)dict

1 字典创建

2 字典操作

2.1 添加或修改

2.2 访问值

2.3 in / not in

2.4 删除元素

3 字典特性

4 字典常用API

四、集合set和固定集合frozenset

1 集合的创建

2 集合操作

2.1 添加元素

2.2 删除元素

2.3 访问与修改

2.4 in / not in

3 常用API

注意!!!


一、列表list

列表是用方括号标注、逗号分隔的一组值,可以(最好不要)包含不同类型的元素:

  • 列表内的数据有先后顺序关系
  • 列表是可变的容器

1 列表创建

  • 字面值

  • 构造函数list

list()           # 创建一个空的列表,等同于 []
list(可迭代对象)   # 用可迭代对象创建一个列表

  • 示例

2 列表运算

列表list同字符串str都是序列, 他们的运算规则基本相同。

  • + 用于拼接列表

  • += 追加(语法:列表 += 可迭代对象)

  • * 用于生产重复的列表

  • == 、!= 用于比较

  • in 、not in 用于判断一个数据元素是否在列表中

3 列表访问

3.1 索引

语法:列表[整型表达式]

3.1.1正向索引
  • 与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。

3.1.2反向索引

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。

3.2 切片

语法:列表[(开始索引b): (终止索引e)(: (步长s))]  —— ()里的内容代表可以省略

  • 省略开始索引:表示从下标0开始
  • 省略终止索引:表示遍历到最后一位元素
  • 省略步长:表示默认为1

4 列表操作

官方文档:内置类型 — Python 3.13.5 文档

4.1 添加数据 

  • 方法
方法名(L代表列表)说明
L.append(x)向列表的末尾追加单个数据
L.insert(index, obj)将某个数据obj 插入到 index这个索引位置的数据之前
L.extend(可迭代对象)等同于: L += 可迭代对象

注意!!:在 Python 中,列表的 append()insert() 和 extend() 方法都是原地修改列表,它们的返回值都是 None,而不是修改后的列表。所以当你调用这些方法并打印它们的返回值时,输出的都是 None

s1 = [1,4,7]

print(s1.append(5))   # 元素5添加在列表s1的末尾,但是不能这么打印。

  • 示例1

  • 示例2

4.2 修改数据

  • 用索引赋值可以改变列表内的数据

列表[整数表达式] = 表达式

  • 示例1

  • 示例2

4.3 删除数据

  • 方法
方法说明
L.remove(x)从列表L中删除第一次出现在列表中的数据元素,如果x不存在则报错
L.pop()根据索引删除元素,并返回该元素。若不提供索引,默认删除最后一个元素
L.clear()清空列表 等同于 del L[ : ]
  • 示例1

  • 示例2

del语句删除指定位置的数据元素

  • 语法

del 变量名     # 删除变量,同时解除变量绑定的对象
del 列表[整数表达式]

  • 示例

4.4 复制数据

  • copy():表示浅拷贝
  • 示例

  • 使用copy模块的deepcopy函数,适用于包含嵌套对象的复杂数据结构。(深拷贝)
  • 示例

5 常见API

通用操作:内置类型 — Python 3.13.5 文档

可变容器操作:https://docs.python.org/zh-cn/3.13/library/stdtypes.html#mutable-sequence-types

  • 示例:
序号函数
1len(list)列表元素个数
2max(list)返回列表元素最大值
3min(list)返回列表元素最小值
4list(seq)将元组转换为列表

二、元组tuple

元组用来存储有序数据,多个值用逗号隔开。

  • 元组使用小括号 ( ),虽然圆括号可有可无;
  • 元组的元素多为异质的,不可变的(immutable),通过解包或索引访问;
  • 列表的元素多为同质的,可变的(mutable),可迭代访问;

1 元组创建

  • 创建元组的字面值

  • 创建元组的函数tuple

2 元组操作

元组是不可变容器。

2.1 删除元组

  • 元组中的元素值是不允许删除的,但可以用del删除元组

2.2 查看元组

  • 元组的元素访问可以像列表一样通过下标、切片等方式去访问。

2.3 解包技能

  • 序列解包:解构赋值,左侧变量与右侧序列元素的数量应相等

3 元组运算

  • 元组中的元素值是不允许修改的,但可以对元组进行连接组合

4 元组不可变

  • 不可变指的是变量指向的内存中的内容不可变,但是变量的指向是可以改变的

  • 变量是可以重新赋值的

5 元组常用API

通用操作:https://docs.python.org/zh-cn/3.13/library/stdtypes.html#common-sequence-operations

  • Python元组包含了以下内置函数
序号方法描述
1len(tuple)返回元组中元素个数。
2max(tuple)返回元组中元素最大值。
3min(tuple)返回元组中元素最小值。
4tuple(list)将列表转换为元组。

  • 元组常用的方法
运算结果
s.index(x[, i[, j]])xs 中首次出现项的索引号(索引号在 i 或其后且在 j 之前)
s.count(x)xs 中出现的总次数

三、映射(字典)dict

  • 字典是可变容器,可存储任意类型对象
  • 字典以键(key)-值(value)对的形式进行映射,键值对用冒号分割,对之间用逗号分割
  • d = {key1 : value1, key2 : value2, key3 : value3 }
  • 字典的数据是无序的
  • 字典的键只能用不可变类型,且不能重复
  • 字典的数据用键进行索引,不能用整数进行索引

1 字典创建

  • 创建字典的字面值

  • 以下写法会存在问题

  • 字典的创建函数 dict()

2 字典操作

2.1 添加或修改

添加和修改字典的元素

  • 语法

字典[键key] = 表达式

键不存在, 就添加

键存在, 会改变键对应的

  • 示例

2.2 访问值

字典的键索引

  • 语法

字典[键key]

  • 示例

  • 如果键不存在会报错

2.3 in / not in

in用于判断一个键/值是否存在于字典中,存在返回True, 否则返回False

  • 例1

  • 例2

2.4 删除元素

能删单一的元素也能清空字典,显式删除一个字典用del命令

  • 语法

del 字典[键]

  • 示例

3 字典特性

  • 不允许同一个键出现两次,否则后一个覆盖前一个

  • 键必须不可变,可以用数字、字符串或元组,列表不行

4 字典常用API

官方文档:内置类型 — Python 3.13.5 文档

  • 操作字典的函数:
序号函数描述
1len(dict)计算字典元素个数,即键的总数。
2str(dict)输出字典,可以打印的字符串表示。
3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。

  • 字典的方法:
序号函数及描述
1dict.clear()删除字典内所有元素
2dict.copy()返回一个字典的浅复制(跟列表的浅复制是一个道理)
4dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值
5key in dict如果键在字典dict里返回true,否则返回false
6dict.items()以列表返回一个视图对象
7dict.keys()返回一个视图对象
9dict.update(dict2)把字典dict2的键/值对更新到dict里
10dict.values()返回一个视图对象
11pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。

四、集合set和固定集合frozenset

集合set和固定集合frozenset

set的元素值必须是不可变的,set中可以存储int、str、tuple等不可变类型,但不能存储 list、dict 等可变类型

  • 集合是可变的容器,固定集合是不可变的集合

  • 集合相当于只有键没有值的字典,当然你也可以理解为键和值相等

  • 集合内的数据都是唯一的,不可变的

1 集合的创建

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

  • 创建集合的方式

  • 创建固定集合frozensets的方式

2 集合操作

官方文档:https://docs.python.org/zh-cn/3.13/library/stdtypes.html#set-types-set-frozenset

2.1 添加元素

将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

函数描述
s.add( x )添加元素到集合。
s.update( x )添加元素到集合,且参数可以是列表、元组、字典等,x 可以有多个,用逗号分开。

2.2 删除元素

函数描述
s.remove( x )将元素 x 从集合 s 中移除,不存在会发生错误。
s.discard( x )将元素 x 从集合 s 中移除,不存在也不会发生错误。
s.pop()对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

2.3 访问与修改

集合是无序的、不可重复的数据结构,不能通过索引来访问其元素。所以也没有对应的修改功能。

TODO:需要通遍历或者迭代器去访问。

2.4 in / not in

x in s 判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

3 常用API

集合的方法

方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()返回集合的交集,并更新到集合。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()返回两个集合的并集
update()给集合添加元素
len()计算集合元素个数
  • 例1

  • 例2

注意!!!

可变类型、不可变类型请看续集

本人牛马大学生,更新作品内容较慢,请耐心等待。。。

如有错别字,请勿责怪🌹🌹🌹🌹🌹🌹

♥♥♥感谢体谅♥♥♥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值