python学习第四天笔记

一.①字典:字典是“键值对”的无序可变序列,字典中的每一个元素都是一个“键值对”,包含:“键对象”,“值对象”,可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。列表中,我们通过“下标数字”找到对应的对象。字典中通过“键对象”找到对应的“值对象”。“键”是任意的不可变数据,eg:整数、浮点数、字符串、元组。但是,列表、字典、集合这些是可变对象,不能作为“键”,且“键”不可重复。
典型定义方式:a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
②字典的创建:
(1)a={‘name’=:‘daniel’,‘age’=18,‘sex’=‘man’}
(2)a=dict(name=‘daniel’,age=18,sex=‘man’)
(3)a=dict([(‘name’,‘daniel’),(‘age’,18),(‘sex’,‘man’)])
(4)zip创建字典:k=[‘name’,‘age’,‘sex’],v=[‘daniel’,18,‘man’],d=dict(zip(k,v)),其中k为键,v为值。
③字典元素的访问
(1)通过“键”获取“值”,若“键”不存在,则抛出异常。

a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
a[‘name’]
daniel

a[‘age’]
18

a[‘sex’]
man

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

a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
a.get(‘name’)
‘daniel’

a.get(‘age’)
18

a.get(‘sex’)
‘man’

(3)列出所有的键值对

a.items()
dict_items([(‘name’,‘daniel’),(‘age’,18),(‘sex’=‘man’)])

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

a=a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
a.keys()
dict_keys([‘name’,‘age’,‘sex’])

a.values()
dict_values([‘daniel’,18,‘man’])

(5)len()键值对的个数
(6)检测一个“键”是否在字典中

a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
“name” in a
TRUE

④字典元素添加、修改、删除
(1)给字典新增“键值对”,如果“键”已经存在,则覆盖旧的键值对;如果不存在,则增加。

a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
a[‘address’]=‘beijing’
a[‘age’]=30
a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’,‘address’:‘beijing’}

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

a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
b={‘name’:‘lyy’,‘age’:30,'money:‘20000’}
a.update(b)
print(a)
{‘name’:‘lyy’,‘age’=‘30’,‘sex’=‘man’,‘money’=20000}

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

a={‘name’:‘danie’,‘age’:18,‘sex’:‘man’}
del(a[‘name’])
a={’‘age’:18,‘sex’:‘man’}

b=a.pop(‘age’)
b
18

总结:
1.键必须可散列
(1)数字、字符串、元组都是可散列的。
(2)自定义对象需要支持下面三点:
①支持hash()函数
②支持_eq_()方法检测相等性。
③若a==b为真,则hash(a)==hash(b)也为真。
2.字典在内存中开销巨大,典型的空间换时间。
3.键查询速度很快
4.往字典里面添加新键可能会导致扩容,导致散列表中键的次序变化。因此,不要在遍历字典的同时进行字典的修改。

二.控制语句
①.选择结构:通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为单分支、双分支、多分支。流程如下:
在这里插入图片描述
在这里插入图片描述
②.单分支选择结构
if语句单分支结构的语法形式如下:
if条件表达式:
(缩进)语句/语句块
其中:
(1)条件表达式:可是一逻辑表达式、关系表达式、算术表达式等。
(2)语句/语句块:可以是一条语句,也可以是多条语句。多条语句缩进必须对齐。
(3)条件表达式的值为false的情况如下:False、0/0.0、空值None、空序列对象(空列表、空集合、空元祖、空字典、空字符串)、空range对象、空迭代对象。其他情况皆为True。

③.双分支选择结构
语法格式如下:
if 条件表达式:
(缩进)语句1/语句块1
else:
(缩进)语句2/语句块2

三元条件运算符:
格式:条件为真时的值 if (条件表达式) else 条件为假时候的值

num=input(“请输入一个数字”)
print(num if int(num)<10 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

三.循环结构:用来重复执行一条或者多条语句,表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为true,如果不为true,则跳出循环。
在这里插入图片描述
循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束,否则会变成一个死循环。
①while循环,格式如下:
while:条件表达式
循环体语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值