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')

 

posted on 2018-09-10 21:35  smile大豆芽  阅读(121)  评论(0)    收藏  举报