Python0220总结
一、字典 c ={ }
存储方式:‘key’:value
1.创建 a = {‘name’:‘zs’,‘age’:18}
2.为什么有键值?确定树
3.键值可以是字符串,数字,元组,不能是列表(列表可以修改)
4.键值不能相同
5.value值的类型:没有限制
6.操作 增删改查
(1)添加(追加) updata
(2)删除:del b{} pop
(3)修改(覆盖)
(4)查询 print() get
(5)查询所有键值 print(b.key) 查询所有属性print(b.value()) 查询所有键值和属性print(b.items())
7,字典内置函数&方法
8,排序
key:类型相同 ,自然顺序
9.冲突
正常想要获取dict中的值,首先要知道key通过dict[key]获取对应的value,在散列表中为了达到这种操作,
首先会计算key的hash值即散列值,把这个值最低的几位数字当作偏移量,在散列表里
查找表元(具体取几位,得看当前散列表的大小)。若找到表元为空,异常KeyError,不为空,
表元里会有一对 found_key:found_value。这时候 Python 会检验 search_key == found_key 是否为真,
如果它们相等的话,就会返回 found_value。如果两个值不匹配,则是散列冲突。
而散列表本身的索引又只依赖于这个数字的一部分。为了解决散列冲突,算法会在散列值中另外
再取几位,然后用特殊的方法处理一下,把新得到的数字再当作索引来寻找表元。
若这次找到的表元是空的,则同样抛出 KeyError;若非空,或者键匹配,则返回这
个值;或者又发现了散列冲突,则重复以上的步骤。
二、插入排序
#插入排序
#5 8 2 6 7
def insertSorted(list):
for i in range(1,len(list)): #从第二个位置开始1,len(list)
temp = list[i] #定义一个临时变量代表当前元素
flag = False
for j in range(i-1,-1,-1): #j 是 i 要比较的前面的元素,i-1是上一个元素,-1是取到0,-1是步长
if list[j]>temp: #比较如果前面的大于的话
list[j+1] = list[j] # 换位置
else:
list[j+1] = temp
flag = True
break
if not flag:
list[0] = temp
a = [5,8,2,6,7]
insertSorted(a)
print(a)
改进后:
#改进
#5 8 2 6 7
def insertSorted(list):
for i in range(1,len(list)):
temp = list[i]
leftindex = i-1
while leftindex>=0 and list[leftindex]>temp:
list[leftindex+1] = list[leftindex]
leftindex -= 1
list[leftindex+1] = temp
a = [5,8,2,6,7]
insertSorted(a)
print(a)