练习一:画出代码 a = [100,200,300]的内存存储示意图
练习二:使用 range 生成序列:30,40,50,60,70,80
s=[x*10 for x in range(3,9)]
print(s)
结果:[30, 40, 50, 60, 70, 80]
练习三:推导式生成列表: a = [x*2 for x in range(100) if x%9==0],手写出结果
该代码表示在 [0 , 200) 中,找到能被2和能被9整除的数,即18的倍数
所以结果为:0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198
练习四:使用二维列表存储表格信息,并画出简单的内存存储示意图:
存储:
s=[["高小一",18,30000,"北京"], \
["高小二",19,20000,"上海"], \
["高小一",20,10000,"深圳"]]
示意图:
练习五:元组和列表有哪些共同点?有哪些不同点?
相同点:
( 1 )索引相同,从左到右都为0~~n-1。
( 2 )拼接相同,都可以用“+”拼接。
( 3 )计数相同,都使用len()函数统计元素个数、使用count()函数统计指定元素的出现次数。
( 4 )都属于有序序列。
( 5 )都可以使用del删除。
( 6 )都可以使用“*”来使本身重复。
( 7 )都可以强制转换。
( 8 )切片方法都一致。
不同点:元组不能修改;列表可以根据索引来修改元素值
练习六:创建一个字典对象
包含如下信息: 支出金额:300.15,支出日期:2018.10.18,支出人:高小七
s={'cost':'300.15','date':'2018.10.18','customer':'高小七'}
练习七:使用字典存储行数据,将练习四中的表使用列表存储起来
r1={"name":"高小一","age":"18","salary":"30000","city":"北京"}
r2={"name":"高小二","age":"19","salary":"20000","city":"上海"}
r3={"name":"高小五","age":"12","salary":"10000","city":"深圳"}
s=[r1,r2,r3]
练习八:用文字和示意图描述:字典存储一个键值对的底层过程
假设存在s={"age"=18},要存储则需要对”age“进行hash()变换,得到结果0B1011011101000
假设底层存储块共有16个槽位,即需要0000四位进行遍历寻找,从右向左的第一个四位是(1000)
对应十进制为8,则放入第9槽位内存块。如第9槽位已有数据,则从右向左的第二个四位是(1110)
对应十进制为14,则放入第15槽位内存块。以此类推,直至找到空槽位。
练习九:集合和字典有什么关系?
集合由字典构成,集合的元素是字典的键,具有无序性。