博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础-day06
阅读量:3701 次
发布时间:2019-05-21

本文共 2779 字,大约阅读时间需要 9 分钟。

一般来说,十家面上,一两家,一周左右找到,

面试官可能不知道细节,so,尽可能圆过去,

课上3个星期,课下可能2个多月,

学的好的,不一定会找到工作,

和自己比,放平心态,做到今天比昨天好!!!

作业讲解:

#4、有字符串"k :1|k1 :2|k2 :3|k3 :4" 处理成字典 {'k':1,'k1':2....}s = 'k:1|k1:2|k2:3|k3:4'li = s.split('|')dic = {}for i in li:    dic[i.split(':')[0]] = int(i.split(':')[1])print(dic)dic = {'k':1,'k1':2}dic = {}for i in s.strip().split('|'):  # ['k:1','k1:2'。。。。]    i = i.strip().split(':')  # ['k ','1']    dic[i[0].strip()] = int(i[1])print(dic)#第一种是我自己写的,第二种是老师写的,我只想说,处理空格这些看不见的字符,很重要

tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])print(type(tu[1][2]["k2"]))     #这里打印出的是字典k2对应的列表的类型,#我想去打印k2的类型,键!多次实验,不行

 
num = 3if num in range(1,10):    print(num)#这种方式和 num>0 and num<=len(li)哪个效率高?# 还是and的效率高,因为可能range()里面的值可能会很大,内部做了很大的遍历,

n = 4while n = n-1:  #这个反正不行,别想了,    pass#invalid syntax,无效语法,看来python不支持C里面的这种写法,#我猜测,可能是C是底层语言,而python封装了很多,所以不行,

这里开始不是作业讲解了,

a,b=(3,4)   #首先这里是元组,print(a, b)dic = {}for x,y in dic.items():#然后这里的items()也是元组,先记着吧,    print(x, y)

字符串不好操作,可以尝试将其转换为列表进而进行操作,

先讲小数据池和id()吧,

a = 1000b = 1000print(a == b)print( a is b)#运行结果TrueTrue>>> a = 1000>>> b = 1000>>> a == bTrue>>> a is b      #这里是对的,False>>> #这里是python shell运行的结果#来个总结,第二个结果,pycharm报的是True,python命令行报False,#pycharm对这个优化了,所以以python shell为准,#也就是说以第二个为准,

小数据池,仅限小范围的数字和字符串,

下面讲,how small number and string

数字的话,-5~256,this is to say,

>>> n1 = 5>>> n2 = 5>>> id(n1)1825592224>>> id(n2)1825592224>>> n1 = 300>>> n2 = 300>>> id(n1)2616865521008>>> id(n2)2616865520912>>> n1 is n2False>>> n1 == n2True>>> #判断的是值是否相等,is判断的是内存是否是同一个.>>> # ==判断的是值是否相等,>>>

而小数据池,关于字符串这块,官网也没有给一个明确的定义,

暂且这么理解吧,

1,如果含有特殊字符,不存在小数据池。

2,str(单个) * int  int > 20 不存在小数据池。

其它的暂且不存在小数据池,

编码底层虽然都是二进制,但是它们的二进制不同,也就是说,它们不熟,不认识,

unicode编码占用位置太多,所以存储和传输都将占用大量空间,

不仅python,其它编程语言,也不会用unicode码来传输,比如java,

不过编码之间的转换,还是会用到unicode编码,

我们之前学了int,str,bool等数据类型,

还有种类型,就是byte,

它拥有与str一样的方法,

目前暂且可以总结的是,

python3的字符编码是utf-8,但是在内存中是unicode,

因为内存中是unicode,所以我们在操作的时候,不能直接存储和发送,

在此,我们再提到之前的byte,它就不是unicode的,

那我们就可以来个转换,

s = 'YQ'print(type(s))print(type(s.encode('utf-8')))y = '哈哈'print(type(y))print(type(y.encode('gbk')))'''下面是运行结果,中文和英文我都试了,也试了其它编码,比如GB2312,重点是编码后,它们打印类型都是bytes,正好印证了老师说的,bytes编码是非unicode,或者utf-8,
'''s = 'hehe's = s.encode("utf-8")print(s) #打印结果b'hehe'print(s.upper()) #打印结果b'HEHE's = '中国's = s.encode("utf-8")print(s) #打印结果b'\xe4\xb8\xad\xe5\x9b\xbd'print(s.upper()) #打印结果b'\xe4\xb8\xad\xe5\x9b\xbd'#两组实验最后都调用了upper(),也说明了byte与str的函数方法一样s = 'hey boy's1 = s.encode('utf-8')print(s1) #打印结果:b'hey boy',#encode()后,打印那个值,前面都会加个b的标志,代表二进制,但应该是处于便于显示的原因,还是显示原来的样子,#来个小补充,不过前面加了b来提示,其实这已经是二进制的形式了,#对于中文的,会有\x提示这是以十六进制的方式显示,应该是便于人查看二进制才以十六进制形式显示吧,

gbk,使用2字节,因此有些中文还表示不了,但是对于常用的中文,还ok,

gbk的英文用的也是ascii码,

来个小总结,那这样的话,不同编码是有些相同的部分,不过大多数还是不同的,

转载地址:http://jhbcn.baihongyu.com/

你可能感兴趣的文章
STM32外部中断测试
查看>>
驱动字库芯片GT23L24M0140
查看>>
Linux驱动 互斥锁mutex测试
查看>>
QT下设置android应用图标和名字的方法
查看>>
zigbee协议解析 路由机制
查看>>
qt中SQLite数据库编程
查看>>
QML学习 Item元素
查看>>
C 下socket编程 udp协议测试
查看>>
ucos-ii示例5 消息队列测试
查看>>
树莓派IO控制
查看>>
安装使用TortoiseSVN + google code
查看>>
Android编程 悬浮菜单按钮FloatingActionButton实例
查看>>
机器学习实战学习笔记(一):KNN算法
查看>>
opencv学习笔记二:角点检测
查看>>
opencv学习笔记三:直方图的计算和绘制
查看>>
opencv学习笔记四:Opencv初探
查看>>
Opencv学习笔记五:了解opencv的数据类型
查看>>
opencv学习笔记六:图像和大型数组类型
查看>>
opencv学习笔记七:绘图和注释
查看>>
opencv学习笔记八:图像,视频与数据文件
查看>>