Day6 of learning python--小数据池
1.知识回顾
字典的增删改查
#增,直接赋值,存在就覆盖,没有就增加。或者使用dic.setdefault(k,v)
1 dic = {"name":"alex"} 2 dic['age'] = 21 3 print(dic)
4 dic.setdefault('male','women')
5 print(dic)
#删除,pop(k),按照key删除,有返回值。dic.clear(),清空键值对,返回的是{},dic.popitem(),随机删除,有返回值。del 通过键直接删除
1 dic = {"name":"alex",'age':21,'male':'women'} 2 dic.pop('age') 3 print(dic) 4 i = dic.popitem() 5 print(i) 6 print(dic)
7 del dic['name'] 8 dic.clear() 9 print(dic)
#改,dic.update(dic1)
1 dic = {"name":"alex"} 2 dic1 = {'male':'women'} 3 dic.update(dic1) 4 print(dic)
#查,dic.keys(),查看所有的键,dic.value(),查看所有的值,dic.items(),查看所有的键值对,并以列表的形式返回,get(k,None)就是找不到的时候,不会报错,并返回None
1 dic = {'name':'alex','age':21,'male':'women'} 2 print(dic.keys()) 3 print(dic.values()) 4 print(dic.items()) 5 for k,v in dic.items(): 6 print(k,v) 7 print(dic.get('hello',None))
2.pycharm的快捷键使用
代码快速运行:ctrl + shit + F10
换行:Shit + Enter
快速查看文档:ctrl + q
快速复制当前行:ctrl + D
3.python2和python3的区别
1)python2的print函数可以加括号,也可以不加
2)python2的用户输入是用raw_input()
3)python2中有一个是xrange()生成器
4.小知识点
= 赋值,== 比较值是否相等,is 比较是不是同一个,id 比较的是内存地址
5.编码
acsii
A:00000010 8位 一个字节
unicode
A:00000000 00000001 00000010 00100100 32位 四个字节
中: 00000000 00100001 00000010 10000100 32位 四个字节
utf-8
A:00110010 8位 一个字节
中:10000001 00000010 10000100 24位 3个字节
gbk
A:00010010 8位 一个字节
中:00010010 10000100 16位 2个字节
1)各个编码之间的二进制,是不能互相识别的,会产出乱码。
2)文件的储存,传输不能是unicode,只能是(utf-8,utf-16,gbk,gb2312等),因为unicode占用太多的资源,所以需要str->bytes来完成传输与存储
Python3中,str在内存中使用unicode编码的,bytes类型是在内存中用utf-8,gbk等编码
对于英文:
str: 表现形式:s = 'alex'
编码方式(内存存储):010101010 unicode
bytes:表现形式:s = b'alex'
编码方式: 00001111 utf-8 gbk
对于中文:
str: 表现形式:s = '中国'
编码方式(内存存储):010101010 010101010 010101010 010101010 unicode
bytes:表现形式:s = b'x\e91\e91\e01\e21\e32\e32' 三个字节表示一个字符(utf-8)
编码方式: 00001111 00001111 00001111 utf-8 gbk(两个字节代表一个字符),就是你所看到的表现形式的最小单位

#encode编码,将str --> bytes,将用于文件的传输和存储
1 s = 'alex' 2 s1 = s.encode('utf-8') # encode 编码,如果将str-->bytes 3 b = "中国" 4 b1 = b.encode('gbk') 5 print(b1,type(b1))
6.小数据池
数字,字符串,公用同一地址,节省内存,数字的范围是-5~255,字符串(1.不能含有特殊字符,2.s*20还是引用同一地址,大于21不在同一个地址)。剩下的list dict tuple set 的各自赋值时是不一样的。
1 i1 = 6 2 i2 = 6 3 print(id(i1),id(i2))
7.练习
1)元素分解,有如下值l1 = [11,22,33,44,55,66,77,88,99,90]将所有大于66的值保存在字典的第一个k1中,其他值在k2,解题思路:先分类,后添加。
1 l1 = [11,22,33,44,55,66,77,88,99,90] 2 dic = {} 3 d1 = [] 4 d2 = [] 5 for i in l1: 6 if i == 66: 7 continue 8 if i > 66: 9 d1.append(i) 10 else: 11 d2.append(i) 12 dic.setdefault('k1',d1) 13 dic.setdefault('k2',d2) 14 print(dic)
2)将列表的内容,与索引一一对应起来,还选择你需要的序号,对应出来的商品。
1 while 1: 2 li = ["手机", "电脑", "鼠标垫", "游艇"] 3 for i in li: 4 print('{}\t\t{}'.format(li.index(i)+1,i)) 5 number_choice = input('please choose which number do you want:') 6 if number_choice.isdigit(): 7 number_choice = int(number_choice) 8 if number_choice > 0 and number_choice < 5: 9 print(li[number_choice-1]) 10 else: 11 print('no this number') 12 elif number_choice.upper() == 'Q': 13 break 14 else: 15 print('try again')
浙公网安备 33010602011771号