python既是无序序列又不可重复的是_Python基础知识-pycharm版-第四次作业

本文详细介绍了Python字典的特性,包括字典是无序可变序列,键必须是不可变类型且不可重复。内容涵盖了字典的创建、访问、修改和删除方法,如get()、update()、del()、pop()等。还提到了字典的扩容机制和底层的散列表原理。此外,文章讨论了序列解包在字典操作中的应用,并对比了字典与集合的区别。最后,简要介绍了Python的控制语句,如if条件语句和while循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典

字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。

“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。

c1a95290256636173b03dac24cfab0d1.png

可以通过{}、dict()来创建字典对象。

通过 zip()创建字典对象

通过 fromkeys 创建值为空的字典

字典元素的访问

(1). 通过 [键] 获得“值”。若键不存在,则抛出异常。

(2). 通过 get()方法获得“值”。推荐使用。优点是:指定键不存在,返回 None;也可以设定指定键不存在时默认返回的对象。推荐使用 get()获取“值对象”。

(3). 列出所有的键值对

(4). 列出所有的键,列出所有的值

(5). len() 键值对的个数

(6). in语句检测一个“键”是否在字典中

d77cc60c46159b6130d78442de63ece2.png

字典元素添加、修改、删除

给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。

(1). 给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。

(2)使用 update()将新字典中所有键值对全部添加到旧字典对象上。如果 key 有重复,则直接覆盖。

(3)字典中元素的删除,可以使用 del()方法;或者 clear()删除所有键值对;pop()删除指定键值对,并返回对应的“值对象”;

(4) popitem() :随机删除和返回该键值对。字典是“无序可变序列”,因此没有第一个元

素、最后一个元素的概念;popitem 弹出随机的项,因为字典并没有"最后的元素"或者其他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效.

clear()删除整个字典。

8c678f2fc827218306ea5d509e4afc1a.png序列解包

序列解包可以让我们方便的对多个变量赋值。

862d4e3bf72218461604fa5796d42407.png

序列解包用于字典时,默认是对“键”进行操作; 如果需要对键值对操作,则需要使用items();如果需要对“值”进行操作,则需要使用 values()

打印表练习

27bdc0eaf05408dec8066ba71241e382.png

字典核心底层原理

字典对象的核心是散列表。散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket。每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。由于,所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket。

python 会根据散列表的拥挤程度扩容。“扩容”指的是:创造更大的数组,将原有内容拷贝到新数组中。接近 2/3 时,数组就会扩容。

存储和查询的总结

键必须可散列

(1) 数字、字符串、元组,都是可散列的。

(2) 自定义对象需要支持下面三点:1 支持 hash()函数

2 支持通过__eq__()方法检测相等性。

3 若 a==b 为真,则 hash(a)==hash(b)也为真。

字典在内存中开销巨大,典型的空间换时间。

键查询速度很快

往字典里面添加新建可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字

典的同时进行字典的修改。

集合

集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。

集合创建和删除

add()方法添加元素

使用 set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个。

f04674c1e23713cac5d25a35da353dad.png

第四章

控制语句

if,

c4262ba643b7eab98feb049bfe8da3af.png

单分支和多分枝的条件语句表单逻辑

7cc5ad2c984c32bb9c120b70fef47e78.png

在选择和循环结构中,条件表达式的值为 False 的情况如下:

False、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空 range 对象、空迭代对象。

其他情况,均为 True。这么看来,Python 所有的合法表达式都可以看做条件表达式,甚至包括函数调用的表达式。

6b1cc5c7336e5f70cbc06d7560c9c8f9.png

bc46c9378021f6ae8d010e237d26fc43.png条件语句中不支持赋值语句

Python 提供了三元运算符,用来在某些简单双分支赋值情况。三元条件运算符语法格式如下:

条件为真时的值 if (条件表达式) else 条件为假时的值

523fa0e9ebfb0b03fc119d774249152d.png

多分枝结构

60ade444c791dc7356eec2b3e2f27301.png

选择结构嵌套

选择结构可以嵌套,使用时一定要注意控制好不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。

f8aecc65d67adf622bf170f1e682da75.png

While循环语句

while语句只要符合条件语句就进入循环体,若不符合则退出

d9e1115859b10a6fab47833161b4cc2c.png

练习计算0—100之间所有数值的和。

f917a01f199bf10e5940129602203d9d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值