python基础第四天

1、字典的创建

 

2、字典元素的访问

1、通过键的名称返回值,类似列表的访问a['name']

2、get(),指定键不存在时可以返回指定值

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

4、列出所有的键a.keys() ,列出所有的值a.values()

5、len()键值对的个数

6、检测一个键是否在字典中 in

>>> a={'name':'name','score':70}
>>> a['name']
'name'
>>> a.get('score')
70
>>> a.len()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'len'
>>> len(a)
2
>>> a.items()
dict_items([('name', 'name'), ('score', 70)])
>>> a.keys()
dict_keys(['name', 'score'])
>>> a.values()
dict_values(['name', 70])

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

1、给字典新增键值对,如果键已存在会覆盖

2、使用update()将新字典中所有键值对全部添加到旧字典中,如果value相同则覆盖

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

4、popitem()随机删除和返回该键值对,字典是无序可变序列,所以是弹出随机项。

>>> a
{'name': 'name', 'score': 70, 'sex': 'man'}
>>> b={'class':'weak','age':10}
>>> a.update(b)
>>> b
{'class': 'weak', 'age': 10}
>>> a
{'name': 'name', 'score': 70, 'sex': 'man', 'class': 'weak', 'age': 10}
>>> a.del('class')
  File "<stdin>", line 1
    a.del('class')
        ^
SyntaxError: invalid syntax
>>> del(a['class'])
>>> a
{'name': 'name', 'score': 70, 'sex': 'man', 'age': 10}
>>> a.pop('age')
10
>>> a
{'name': 'name', 'score': 70, 'sex': 'man'}
>>> clear(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'clear' is not defined
>>> a.clear()
>>> a
{}

del()是系统自带方法,update(),pop(),clear()都是dict的方法。

4、序列解包

序列解包可以用于元组列表字典。序列解包可以让我们方便的对多个对象赋值。

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

>>> s={'name':'xiaoyang','sex':'woman'}
>>> a,b=s
>>> a,b
('name', 'sex')
>>> c,d=s.items()
>>> c,d
(('name', 'xiaoyang'), ('sex', 'woman'))
>>> e,f=s.values()
>>> e,f
('xiaoyang', 'woman')

5、字典核心底层原理

5.1存储的底层过程

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

每个字典在创建时有一个默认大小,在存储过程中,对要存储的键先进行编码,根据一定的规则去依次填充字典,如哈希值的编码,如果所在位置为空,则直接填充,如果所在位置不空,则依次选择右旁边的位置进行填充,直到找到空的bucket。

python会根据散列表的拥挤程度扩容,创造更大的数组,将原有内容拷贝到新数组,接近三分之二时,数组就会扩容。

5.2根据键查找键值对的底层过程

同样的,也是先计算要找的键的散列值,然后去相应位置去查找,如果不空,则进行一次比较,看所在位置的键对象的散列值是否相同,如果相同则返回键值对,不同则去旁边继续寻找,直到遍历所有,然后返回空。

总结。字典在内存中开销巨大,典型的空间换时间。键查询速度很快,往字典中添加新键可能会导致扩容,导致散列中键的次序变化,因此不要在遍历字典的时候进行字典的修改。

6、集合

集合时无序可变的,元素不能重复,集合底层是字典实现,集合的所有元素是字典的键对象,因此是不能重复且唯一的。

6.1集合创建和删除

1、使用{}创建集合对象,并使用add()添加元素

2、使用set()转化为集合

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

6.2集合相关操作

a|b 并集a.union(b)

a&b 交集a.intersection(b)

a-b差集a.difference(b)

代码略

7、pycharm安装

8、选择结构

选择结构通过判断条件是否成立,来决定执行哪个分支,分为单分支,双分支,多分支。

在循环结构中,条件表达式的值为False的情况如下:False,0,空值None,空序列对象(空字符串,空列表,空字典等),空range,空迭代对象。除此之外,均为True。

条件表达式中不能有赋值操作符‘=’

三元条件运算符

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

print('bingo' if 10>9 else 'wrong')

选择结构嵌套,选择结构可以嵌套使用时一定要注意空值好不同级别代码块的缩进量。

9、循环结构

while循环

while 条件表达式:

    循环体语句
a=5
while a<10:
    a+=1
    print(a)
b=0
c=0
while b<100:
    c+=b
    b+=1
print(c)

 

适合人群: 1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web框架的朋友; 2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友; 3、有Django基础,但是想学习企业级项目实战的朋友; 4、喜欢 Django 框架并想深入研究的朋友; 5、有一定的数据库基础   课程目标: 本系列课程是从零基础开始并深入讲解Django,最终学会使用Django框架开发企业级的项目。课程知识点全网最详细,项目实战贴近企业需求。本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发中所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。   课程内容: 在人工智能大行其道的时代,许多开发者对Python这门编程语言都比较熟悉。但是如何用它实现一个企业级别的项目,可能许多朋友还存在一些困惑。联科教育“跟着王进老师学Python”系列课程是专门针对想要从事Python Web开发的朋友而准备的,并且按照企业需求的标准定制的学习路线。学习路线中包含Python基础和进阶、Web前端、MySQL数据库、Flask和Django框架以及N多个企业真实项目。在学习完本系列中所有的课程后,从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的事情,掌握实现全栈开发,让你升职加薪不是梦! 本季课程介绍了Django中ORM模型,使用ORM模型的优势;Django中ORM模型常用的字段,ORM实现数据查询;Django后台管理等。所有应用均通过案例“在线图书商城”完成讲解和演示,完整项目,贯穿全部知识点,边学边练,帮助大家快速掌握知识,了解企业要求。
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页