数据类型和变量
python像其他编程语言一样,可以处理各种数据,有整数,浮点数,字符串,布尔值等等。在字符串中,可以采用这种模式输出“或者‘。比如:
print(" I'm best")
这样的好处在于可以输出’,同时也可以用转移符号\,同样还是上面的例子:
print('I\'m best')
如果有很多转移符号,则使用 r'',默认r''里的内容都不转义,例如:
print(r' \\\t\\\\ ')
字符编码
在计算机内存中统一使用Unicode编码。当想要保存到硬盘或者传输时统一使用utf-8。
Unicode编码就相当于,中国那么多地方,当然有很多方言,而Unicode就相当于普通话。
utf-8就是普通话里面的一种精简模式,能短就短。
在python中字符串(str)是以Unicode编码的。如果要存储或者传输就需要将str转变成以字节为单位的bytes,bytes以这种形式存在b'xxxx'.
以Unicode编码的str可以通过encode()方法编码成指定的bytes。注意纯英文的可以变成ASCII
含有中文的可以转为utf-8。同样我们可以用decode()方法将bytes转为str。
dict和set
dict:
直接指定dict的值,如果key不存在会报错。如:
student['Tom'] = 99
不存在的话会报错KeyError:'Tom'
要解决这种问题可以使用get()方法。比如:
student.get('Tom')
student.get('Tom', -2)
如上,第一行表示如果Tom不存在则返回None,第二行表示如果Tom不存在则返回-2.
dict查找和插入速度极快,不会因为key变多而变慢。但是需要占用大量内存。
list查找和插入的时间随元素增加而增加,但是占用空间小。
dict的key必须是不可变对象。因为dict根据key来计算value的存储位置,如果key变化,则计算得到的value就不同。在python中,字符串,整数等都是不变的。但是list就是可变的不能作为key,如:
key = [1,2,3]
student[key]=2
这会报错
set:
set有点像dict但是没有value。而且会自动去除重复key。原理和dict一样,同样不可放入可变对象。
虽然tuple也是不可变对象,但是同样不能放入dict和set:
key=(1,2,3)
key1=(1,2,[3,4])
d = {}
d[key] =2
d[key1] 报错unhashable type : 'list'
set(key)
set(key1) 报错unhashable type : 'list'
可能是因为元祖定义之后就不可变,而能不能hash默认根据id,其次根据内容。而元祖id不变,内容定义后也不会变,所有就可以作为字典的key值。
领取 专属20元代金券
Get大咖技术交流圈