python学习(一)-廖雪峰

数据类型和变量

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值。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031G0N6SL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券