相关链接
- 目录
- Mac M1 Python环境搭建
- Python3.x入门 P1 【基础】基础语法、注释、标识符、变量、数据类型、键盘录入input
- Python3.x入门 P2 【基础】运算符
- Python3.x入门 P3 【基础】流程语句【循环结构】
- Python3.x入门 P4 【基础】序列 - 公共方法总结
- Python3.x入门 P5 【基础】可变序列(列表list、字典dict、集合set)
- Python3.x入门 P6 【基础】不可变序列(元组tuple、字符串str)
- Python3.x入门 P7 【字符串格式化】四种方式(手动、%-formatting、str.format()、f-String)
- Python3.x入门 P8 【函数】
- Python3.x入门 P9 【异常Error】常见Error、异常捕获try catch
一、序列
| 序号 | 类型 | 数据结构 | 值可重复 | 是否有序 | 定义符号 |
|---|---|---|---|---|---|
| 1 | 可变序列 | 列表(list) | √ | √ | [v1,v2,…] |
| 2 | 可变序列 | 集合(set) | × | × | {k1,k2,…} |
| 3 | 可变序列 | 字典(dict) | key(×) value(√) | × | {k1:v1,k2:v2,…} |
| 4 | 不可变序列 | 元组(tuple) | √ | √ | (v1,v2,…) |
| 5 | 不可变序列 | 字符串(str) | - | - | 'xxx' / "xxx" |
1.1 可变序列 or 不可变序列
可变序列:可以对执行序列进行增、删、改操作,对象地址不发生改变。
可变序列特点:
1.可变序列发生改变时,是不会改变地址的,而是改变内存中的值,或者是扩展内存空间。
2.字典是一个可变序列,但是字典的键是不可变的,而值是可变的。因为字典结构的原理是伪随机探测的散列表,它的查找方式是将键通过哈希函数,找到值的内存地址。所以哈希后的值一般是唯一的或是冲突比较小的。如果改变键的值,name哈希后的值就会发生变化,导致找不到原来的值,所以键的值是不可变的。键哈希后指向的是内存中的地址,内存中的数据发生变化不影响字典的查找。
不可变序列:没有增、删、改的操作。由于其内存中不可变特性,在多线程场景下,不需要加锁。
不可变序列的特点:
1.元组中存储的是对象的引用
a) 如果元组中对象本身不可变对象,即指向的内存地址不可变
b) 如果元组中的对象是非基本类型,可以修改其中的数据t = (10, [20, 30], 9) print(t) # (10, [20, 30], 9) # 元组中的元素是引用类型时,可以修改引用类型的数据 t[1].remove(30) # (10, [20], 9) print(t) # (10, [20], 9) # 不可以修改元素的内存地址 t[1] = [50] print(t) # TypeError: 'tuple' object does not support item assignment2.如果对不可变序列做出改变,会将该序列存储在新的地址空间中,而原来的序列因为垃圾回收机制,会被回收。
1.列表:
a. 列表存储相同类型的数据(虽然可以存储不同类型数据,但一般不这么做)
b. 通过迭代遍历,再循环体内部,针对列表中的每一项元素,执行相同的操作
2.集合:
a. 包含关系的比较,判断集合关系
b. 数据去重(值不可重复的特性)
c. 数据打乱顺序(无序特性)
3.字典:
a. 使用多个键值对,存储描述一个物体的相关信息 — — 描述更复杂的数据信息
b. 将多个字典放在一个列表中,再进行遍历,再循环体内部针对每一个字典进行相同的处理
card_list=[{"name":"张三","qq":"12345","phone":"110"},
{"name":"李四","qq":"54321","phone":"119"}]
for card_info in card_list:
print(card_info)
'''测试结果
{'name': '张三', 'qq': '12345', 'phone': '110'}
{'name': '李四', 'qq': '54321', 'phone': '119'}
'''
4.元组:
a. 函数的 参数 和 返回值,一个函数可以接受任意多个参数,或者一次返回多个数据
b. 字符串格式化,格式化字符串后面的()本质上就是一个元组
c. tuple(列表)->让列表不可以被修改,以保护数据安全
列表:list = ['hello', 'world', 100]
集合: set = {'python', 'hello', 90}
字典:dict = {'name': '张三', 'age': 100}
元组:tuple = ('python','hello',90)
字符串: str = 'python'
本文详细介绍了Python3.x中的序列类型,包括可变序列(列表、集合、字典)和不可变序列(元组、字符串)。重点讲解了序列的增删改操作、内存特性和多线程安全。还给出了各种序列的常见应用场景,如列表的迭代遍历、集合的去重、字典的键值对存储等。此外,探讨了元组作为函数参数和返回值的优势以及字符串格式化的四种方式。

被折叠的 条评论
为什么被折叠?



