2021-10-18


基本数据类型

字典

字典就是键值对的无序可变序列,每个元素叫键值对,包含键对象和值对象。可通过键对象实现获取删除更新对应 值对象

  • 是任意的不可变数据,但是列表字典集合这些可变对象,不能作为 键。并且 键 不可变。
  • “值”可以是任意的数据,并且可重复。

定义方式:a={‘name’:‘gaoqi’,‘age’:18,‘job’:‘programmer’} 通过键 到 值

字典的创建:

  1. {}、dict()
  2. zip()
  3. fromkeys 创建为空的字典

字典的访问

  1. [键] 的方式
  2. get(键) 键不存在 返回NONE
  3. 列出所有键值对
  4. 列出所有键
  5. len()检测键值对个数
  6. in 检测 键 是否在字典中

字典添加 删除

  1. a[‘address’]=‘八九十个’ 键重复 则会覆盖
  2. update() 将新字典所有键 覆盖 重复会覆盖
  3. del() 元素删除 del(a[‘name’]) ;clear() 所有键值对删除 a.clear();pop() 删除元素并得到元素对应 值对象
  4. popitem() 随机删除并返回该键值对

序列解包
可用于 元组 列表 字典
a,b,c=10,20,30 a=10
字典 键a,b,c=s 值d,e,f=s.values() 键值对h,i,g=s.items()

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

键值放入的底层过程
固定长度后 通过hash()计算 散列值 以此取右往左几位的数字做偏移量,依次找到对应的bucket 满了就换位置 2/3都满了 则进行扩容操作
操作流程图如下
在这里插入图片描述
而对于键取值的过程,先进行hash()取得散列值,安后几位寻找,依次寻找的散列值进行比较,相同即为目标。不同则按前几位继续寻找,直道找到。过程流程图如下

集合

集合 : 无序可变,且不能重复 底层实施字典的实现,元素是字典的“键对象”
创建:

  1. {}直接创建,add()方法添加
  2. set() 将列表及元组可迭代对象转换成集合 重复内容只保留一个
  3. remove() 删除指定元素 ;clear() 全部清空

相关操作:

  1. 并集 a|b 或 a.union(b)
  2. 交集 a&b 或 a.intersection(b)
  3. 差集 a-b 或 a.difference(b)

第四章 控制语句

选择结构 分单只与多支

单支结构:
if 条件表达式:
语句/语句块
单支中条件表达式的值为 False 的情况: False、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字 符串)、空 range 对象、空迭代对象。
注意:条件表达式中,不能有赋值操作符“=”

双分支选择结构:
if 条件表达式 :
语句 1/语句块 1
else:
语句 2/语句块 2

三元条件运算符 更加简洁
条件为真时的值 if (条件表达式) else

多分支选择结构
多分支选择结构的语法格式如下:
if 条件表达式 1 :
语句 1/语句块 1
elif 条件表达式 2:
语句 2/语句块 2

elif 条件表达式 n :
语句 n/语句块 n
[else:语句 n+1/语句块 n+1 ]
如果每个分支都使用了独立的、完整的判断,顺序可以随意挪动,而不影响程序运行。

选择结构嵌套
选择结构可以嵌套,注意控制缩进量,决定了 代码的从属关系
语法格式如下:

if 表达式 1:
    语句块 1 
    if 表达式 2:
          语句块 2 
    else:
          语句块 3 
else:
    if 表达式 4:
          语句块 4

循环结构
while 循环的语法格式如下:
while 条件表达式:
循环体语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值