字典

1 “键值对”的无序可变序列。
键值对:通过键对象实现快速获取删除,更新对应的值对象。键是任意的不可变数据,且不可重复。

2 创建方式
(1){},dic()创建
(2)zip()创建字典对象
(3)fromkeys创建值为空的字典:有健,但是值为none

3 元素的访问
(1)[键]获得值:例如a[‘name’]
(2)通过get()方法获得“值”。例如a.get(‘name’)

4 列出所有键值对
a.items()

5 列出所有的键,所有的值
a.keys()
a.value()

6 len()键值对的个数,检测是否存在其中
“name” in a
输出结果为true或者false

7 新增“键值对”
a[‘name’]=zhang
(1)若不存在,则会新建键值对;若存在,zhang会覆盖原有的键值对(如原有的键值对为jiang,zhang会覆盖jiang)
(2)update()全部添加到旧字典上,重复会覆盖

8 删除元素
del(a[‘name’])
clear()——删除全部
pop()—— 删除指定键值对,返回对应“值对象”
popitem()——随机删除和返回该键值对,可用来接连(依次弹出返回)移除并处理项。

10 序列解包
可对多个变量进行赋值
(1)默认对“键”进行操作
(2)对“键值对”操作,需要items()
(3)对“值”操作,需要用values()

11 字典核心底层原理
首先梳理一下几个概念:
字典的核心对象——散列表;
散列表——总有空白元素的数组;
数组的每个单元——bucket(表元);
bucket构成——键与值对象的引用,两部分构成。

(1)放
假设创建一个字典a,设置一个字符串。
对字符串计算其键的hash(),将这串数字从右往左取数字,使其必须符合数组长度的数。三位取出的数字看其对应的十进制数字偏移量,对应的bucket是否为空。
若为空,键值对放入;若不为空,再依次取三位二进制的偏移量进行判断,直到为空。
若数组大部分(三分之二以上)是满的,会扩容

(2)取
假设创建一个字典a,设置一个字符串。
对字符串计算其键的hash(),将这串数字从右往左取数字,使其必须符合数组长度的数。三位取出的数字看其对应的十进制数字偏移量,对应的bucket是否为空。
若为空,返回none。不为空,这个bucket对应的键对象hash()和原hash()进行比较,相等返回“值对象”,不相等,再依次取数字,计算偏移量。

集合

1 无序可变,元素不可重复,集合底层是字典实现。

2 set(),对象转成集合

3 remove(),删除指定元素
clear(),删除整个集合

控制语句

选择语句

1 单分支选择结构

if 条件表达式:
	语句/语句块
a=input("请输入一个小于十的数字:")
if int(a)<10;
	print(a)

(1)表达式的值是false:0、0.0、空值none、空序列对象、空range对象、空迭代对象
(2)条件表达式中,不可有赋值操作符“=”

2 双分支选择结构

if 条件表达式:
	语句1/语句块1
else:
	语句2/语句块2

(1) 三元条件运算符:

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

3 多分支选择结构

if 条件表达式1:
	语句1/语句块1
elif 条件表达式2:
	语句2/语句块2
	.
	.
	.
elif 条件表达式n:
	语句n/语句块n	
[else:
	语句n+1/语句块n+1]    #[]表示可选

4 选择结构嵌套
注意控制不同级别代码块的缩进量

循环语句

while循环

while 条件表达式:
	循环体语句