数据类型内置方法(二)
数据类型内置方法之字典
1.类型转换
dict()
字典的转换一般不使用关键字 ,而是自己动手
2.字典必须要掌握的操作
user_dict = {'username':'kiki',
'password':123456,
'hobby':['music', 'listening', 'running']}
1.按k取值(不推荐使用)
# print(user_dict['username']) # kiki
# print(user_dict['number']) # KeyError: 'number' 当k不存在时就会报错
# #2. 按内置方法get 取值 (推荐使用)
# print(user_dict.get('username')) # kiki
# print(user_dict.get('number')) # None
# print(user_dict.get('username','抱歉,您输入的内容有误!!')) #kiki 键存在的情况下获取对应的值
# print(user_dict.get('number','抱歉,您输入的内容有误!!')) # 抱歉,您输入的内容有误!!
当键不存在再默认返回None,可以通过第二个参数自定义
3.修改数据值
# print(id(user_dict)) # 2048528638144
# user_dict['username'] = 'kiki' # 键存在则修改对应的值
# print(id(user_dict)) # 1255858725056
# print(user_dict) # {'username': 'kiki', 'password': 123456, 'hobby': ['music', 'listening', 'running']}
4.新增键值对
# user_dict['age'] = 18
# print(user_dict) # 键不存在则新增键值对
# {'username': 'kiki', 'password': 123456, 'hobby': ['music', 'listening', 'running'], 'age': 18}
5.删除数据
# del user_dict['username'] # 通过键直接删除键和键所对应的值
# print(user_dict) # {'password': 123456, 'hobby': ['music', 'listening', 'running']}
# test = user_dict.pop('username')
# print(test) # kiki 删除的时键对应的值
6. 统计字典中键值对的个数
# print(len(user_dict)) # 3
7.字典三剑客
# print(user_dict.keys()) # dict_keys(['username', 'password', 'hobby']) 一次性获取字典所有的键
# print(user_dict.values()) # dict_values(['kiki', 123456, ['music', 'listening', 'running']]) 一次性获取字典所有的值
# print(user_dict.items()) # dict_items([('username', 'kiki'), ('password', 123456), ('hobby', ['music', 'listening', 'running'])]) 一次性获取字典的键值对数据,并列表的形式展示
# for i in user_dict.items():
# k,v = i
# print(k,v)
# for k,v in user_dict.items():
# print(k,v)
""" 输出等于
username kiki
password 123456
hobby ['music', 'listening', 'running']
"""
8.补充说明
# print(dict.fromkeys(['sum', 'number', 'pwd'],123)) # {'sum': 123, 'number': 123, 'pwd': 123} 快速生成值相同的字典
# test1 = dict.fromkeys(['sum', 'number', 'pwd'],[])
# print(test1) # {'sum': [], 'number': [], 'pwd': []} 只限值相同的字典
# test1['sum'].append('56')
# test1['number'].append('13141516')
# test1['pwd'].append('316761999')
# print(test1) # {'sum': ['56', '13141516', '316761999'], 'number': ['56', '13141516', '316761999'], 'pwd': ['56', '13141516', '316761999']}
""" 当第二个公共值[]是可变类型的时候,一定要注意,通过任何一键的修改都会影响所有"""
# test2 = user_dict.setdefault('username', 'jason')
# print(user_dict,test2) # {'username': 'kiki', 'password': 123456, 'hobby': ['music', 'listening', 'running']} kiki 键存在则不修改,结果是键对应的值
# test3 = user_dict.setdefault('age', 22)
# print(user_dict,test3) # {'username': 'kiki', 'password': 123456, 'hobby': ['music', 'listening', 'running'], 'age': 22} 22
# 不存在则新增键值对 ,结果是新增的值
# user_dict.popitem() # 弹出简直队,后进先出
# print(user_dict) # {'username': 'kiki', 'password': 123456}
数据类型内置方法之元组
1.类型转换
tuple()
支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法
t1 = (11, 22, 33, 44, 55, 66, 77)
1.索引取值
print(t1[2]) # 33
print(t1[0]) # 11
print(t1[6]) # 77
2.切片操作
print(t1[0:5]) # (11, 22, 33, 44, 55)
print(t1[:]) # (11, 22, 33, 44, 55, 66, 77)
print(t1[:5]) # (11, 22, 33, 44, 55)
3.间隔、方向
print(t1[::2]) # (11, 33, 55, 77)
4.统计元组内某个数据值出现的次数
print(t1.count(11)) # 1
5.统计元组内数据值的个数
print(len(t1)) # 7
6. 统计元组内指定数据值的索引值
print(t1.index(22)) # 1
7 元组内如果只有一个数据值,那么逗号不能少
print((11,)) # (11,)
8 .元组内索引绑定的内存地址不能被修改(注意区别 可变与不可变)
l1 = (11, 22, 33, 44, [22, 33, 44, 55]) # 元组能不能修改,但列表中是可以的
9.元组不能新增或删除数据
数据类型内置方法之集合
1.类型转换
set()
集合内数据必须是不可变类型(整型、浮点型、字符串、元组)
可变类型有列表,集合
2.集合需要掌握的方法
去重
关系运算
注意:只有遇到上述两种需求才应该考虑使用集合
3.去重
# l1 = {11, 33, 22, 55, 35, 78, 89, 33,11, 33,22, 44}
# l2 = [11, 33, 22, 55, 35, 78, 89, 33,11, 33,22, 44]
# l1 = set(l2)
# l2 =list(l1)
# print(l1) # {33, 35, 11, 44, 78, 22, 55, 89}
""" 集合的去重无法保留原先数据的排列顺序"""
4.关系运算
群体之间做差异化校验
eg: 两个微博账户之间,有不同的好友也有相同的好友
# 关系运算
l1 = {'康辉', '尼买提', '朱广权', '撒贝宁', '冰冰'} # 用户1的好友列表
l2 = {'康辉', '冰冰', '邹韵', '刘仲萌', '董卿'} # 用户2的好友列表
# 1.求两个人的共同好友
print(l1 & l2) #{'康辉', '冰冰'}
2.求用户1独有的好友
print(l1 - l2) # {'撒贝宁', '朱广权', '尼买提'}
3.求两个人所有的好友
print(l1 | l2) # {'尼买提', '邹韵', '董卿', '冰冰', '撒贝宁', '朱广权', '康辉', '刘仲萌'}
4.求两个人各自独有的好友
print(l1 ^ l2) # {'朱广权', '尼买提', '刘仲萌', '邹韵', '撒贝宁', '董卿'}
5.父集 子集
print(l1 > l2) # False
print(l1<l2) # False
字符编码
字符编码理论
字符编码的理论很多,但是结论很少,代码使用也很短>>>>:JasonJi博客
计算机内部存储数据的是二进制数,只认识0和1,但我们却敲出各式各样的字符,是因为我们有字符编码本,是存储着一个数字跟字符的对应关系。
字符编码发展史
1.一家独大
计算机是由美国人发明的,为了能够让计算机上识别英文
需要发明一个数字跟英文字母的对应关系
ASCII码;记录了英文字母跟数字的对应关系
用8bit(1字节)来表示一个英文字符
2.群雄割据
中国人
GBK码:记录英文、中文与数字的对应关系
用至少16bit(2字节) 来表示一个中文字符
很多生僻字还需要使用更多的字节
英文还是用8bit(1字节)来表示
日本人
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是自己定制的编码本
不同国家的文本数据无法直接交互 会出现"乱码"
"""
3.天下一统
unicode 万国码
兼容所有国家语言字符
中文起步就是两个字节来表示字符
utf系列:utf8 utf16 ...
utf系列用于优化unicode存储问题
英文还是采用一个字节 中文三个字节
字符编码实操
1.转文档时,遇到乱码不要慌,切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes 类型数据.decode()
3.python2与python3差异
python2默认的编码试ASCII
1.文件名
#encode:utf8
2.字符串前面加u
u'你好啊’
python 3 默认的编码是utf系列(unicode)
# -*- encoding:utf8 -*-
test= '工作就是要轻轻松松的工作'
# 编码
print(test.encode('utf8')) # # bytes类型在python直接看成二进制即可
"""b'\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xb0\xb1\xe6\x98\xaf\xe8
\xa6\x81\xe8\xbd\xbb\xe8\xbd\xbb\xe6\x9d\xbe\xe6\x9d\xbe\
xe7\x9a\x84\xe5\xb7\xa5\xe4\xbd\x9c'
"""
res = test.encode('gbk') # # 模拟网络数据
# 解码
res1 = res.decode('gbk')
print(res1) # 工作就是要轻轻松松的工作
"""
b'\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xb0\xb1\xe6\x98\xaf\xe8\
xa6\x81\xe8\xbd\xbb\xe8\xbd\xbb\xe6\x9d\xbe\xe6\x9d\xbe\
xe7\x9a\x84\xe5\xb7\xa5\xe4\xbd\x9c'
"""
标签:username,内置,22,数据类型,dict,user,print,kiki,方法
From: https://www.cnblogs.com/zhanglanhua/p/16745806.html