python初识三
Posted 幸福的小耗子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python初识三相关的知识,希望对你有一定的参考价值。
字典
ps:数据类型分类:1、不可变数据类型:元组、bool、int、str、(也被称为可哈希)
2、可变数据类型:list、dict(不可哈希)
字典的Key必须为不可变数据类型,但字典的值value可以为任意数据类型
dict 的优点:可以使用二分查找查询、可以存储大量的关系型数据
特点:在python3.5之前的版本,字典是无序的
字典的增
dic = {‘name‘:‘haohao‘} dic[‘age‘] = 22 # 若无键值对,则增加键值对 print(dic) dic[‘name‘] = ‘huahua‘ # 若有键值对,则值覆盖 print(dic)
dic = {‘name‘: ‘HaoHao‘} dic.setdefault(‘age‘, 22) # 若无键值对,则增加键值对 print(dic) dic.setdefault(‘name‘, ‘HuaHua‘) # 若有键值对,则不执行操作 print(dic)
字典的删
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} s = dic.pop(‘name‘, None) # 若键值存在,则删除键,返回值;若不存在返回None(可自定义) print(s)
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} k,v = dic.popitem() # 随机删除键值对,返回删掉的键值对 print(k,v)
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} dic.clear() # 清空字典 print(dic)
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} del dic[‘name‘] # 删除键‘name‘,没有则会报错 print(dic) del dic # 删除字典 print(dic)
字典的改
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} dic[‘name‘] = ‘HuaHua‘ # 直接对键值进行修改 print(dic)
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} dic2 = {‘name‘: ‘HuaHua‘} dic2.update(dic) # dic的键值对对dic2进行覆盖添加 print(dic2)
字典的查
dic = {‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘} l1 = dic.keys() # 字典的Key放入列表 l2 = dic.values() # 字典的值放入列表 l3 = dic.items() # 将字典的键值对构成一个小元组,放入列表 print(l1, ‘ ‘, l2, ‘ ‘, l3) for k, v in l3: # 通过循环查询输出键值对 print(k,v) s = dic.get(‘name1‘, None) # 通过get获取键值信息,查到后返回对应值,若没有查到返回None(可自定义) print(s)
字典的嵌套
dic = {‘sushe‘:{1:{‘name‘: ‘HaoHao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘}, 2:{‘name‘: ‘HuaHua‘, ‘age‘: 20, ‘hobby‘: ‘IT‘}, 3:{‘name‘: ‘AnShao‘, ‘age‘: 22, ‘hobby‘: ‘IT‘}}, ‘school‘: ‘ShiFan‘} dic[‘sushe‘][4] = {‘name‘: ‘QianGe‘, ‘age‘: 23, ‘hobby‘: ‘IT‘} # 添加新的建值对 dic[‘sushe‘][2][‘name‘] = dic[‘sushe‘][2][‘name‘].upper() # 将字典中的某个字符串大写 print(dic)
小知识点总结
1、python2与python3的区别
python2中 print ‘abc‘ 可以加()也可以不加
range() xrange()
raw_input()
python3中 print (‘abc‘)必须加()
range()
input()
2、= == is id
= 赋值
== 比较值是否相等
is 比较内存地址
id 内容地址
l1 = [1, 2, 3] l2 = [1, 2, 3] print(l1 is l2) l3 = l1 print(l1 is l3) print(id(l1), id(l2), id(l3))
3、int str
注意:数字和字符串类型有小数据池(可以节省内存空间)
数字的范围 -5~256
字符串:1、不能有特殊字符;2、s*20还是同一个地址,但s*21以后就是不同地址了(python3.7第二点好像不适用)
i1 = 6 i2 = 6 print(i1 is i2, id(i1), id(i2)) s1 = ‘abc‘ s2 = ‘abc‘ print(s1 is s2, id(s1), id(s2))
4、(1)多个编码规则之间的二进制是不能相互识别的,互相之间会产生乱码
(2)文件的存储、传输的时候不能是unicode编码方式(可以是utf-8、utf-16、gbk、gb2312等)
(3)python3的str 在内存中是用unicode编码的,在存储和传输时要转换成bytes类型(utf-8、gbk、gb2312)
ps:编码类型的转换方式
对于英文: str :表现形式:s = ‘alexi‘ 编码方式为:01010101······(unicode),
bytes: 表现形式:s = b‘alexi‘ 编码方式为:010101010·······(utf-8、gbk、gb2312)
对于中文: str : 表现形式: s = ‘中国‘ 编码方式为: 0101011110······(unicode)
bytes: 表现形式:s = b‘xe4xb8xadxe5x9bxbd‘ 编码方式为:01010100·····(utf-8、gbk、gb2312)
如何将str 转换为 bytes编码方式?encode()
s1 = ‘中国‘ s2 = s1.encode(‘utf-8‘) print(s2)
基础数据类型补充
list: 在循环列表时要注意不要删除列表中的内容,因为列表时可变数据类型,在删除列表中内容后会影响循环
dict:补充一种字典的建立方式
dic = dict.fromkeys([1, 2, 3], []) # 迭代添加Key,添加同样的值 print(dic) dic[1].extend(‘泰格‘) dic[2].append(‘二哥‘) print(dic) # 要注意的是,这样建的字典和直接定义的字典的不同之处,这种字典中修改一个键值,所有的都会改变,要注意与下面方式的区别
dic = {1: [], 2: [], 3: []} print(dic) dic[1].extend(‘泰格‘) dic[2].append(‘二哥‘) print(dic)
同样,字典也属于可变数据类型,因此与列表一样,在循环字典时不能删除字典的键值对,当想删除字典的键值对时,应
先将想要删除的键写入一个列表中,然后在通过循环列表删除字典中的键值对。
dic = {1: [], 2: [], 3: [], 4: []} li = [] for i in dic: if i%2 == 0: # 删除字典中的偶数键值对 li.append(i) for i in li: del dic[i] print(dic)
ps:小知识 0 ‘‘ [] {} set() 转化为 bool 时为False
以上是关于python初识三的主要内容,如果未能解决你的问题,请参考以下文章