字典相关操作
1.类型转换
dict()
字典的转换一般不使用关键字,而是自己动手转
2.字典必须要掌握的操作
user_dict = {
'username':'jason',
'passwodr':123,
'hobby':['read', 'music', 'run']
}
1.按k取值(不推荐用)
print(user_dict['username']) # jason
2.get取值
print(user_dict.get('username')) # jason
print(user_dict.get('age')) # None 索引没有的不报错
print(user_dict.get('username', '嘿嘿嘿')) # 索引有不影响
print(user_dict.get('age', '嘿嘿嘿')) # 索引无显示,相当于检查索引
3.修改值数据
print(id(user_dict)) # 1749828784320
user_dict['username'] = 'tony' # 索引username对应修改为tony
print(id(user_dict)) # 1749828784320
print(user_dict)
4.新增键值对
user_dict['age'] = 18 # 索引不存在则新增键值对
print(user_dict) # 自动末尾添加
5.删除数据
del user_dict['username']
print(user_dict) # 键值一起删除
res = user_dict.pop('password')
print(user_dict)
print(res) # 123
6.统计字典中键值对的个数
print(len(user_dict)) # 3个
7.字典三剑客
print(user_dict.keys()) # 一次性获得字典所有的键
print(user_dict.values()) # 一次性获得字典所有的值
print(user_dict.items()) # 一次性获得字典所有的键值对数据
for的特殊使用
for i, k in user_dict.items(): # 一次性获得所有键值对,循环解压赋值
print(i, k)
"""
username jason
passwodr 123
hobby ['read', 'music', 'run']
"""
8.补充说明
print(dict.fromkeys(['name','pwd', 'hobby'], 123)) # 快速生成字典
l1 = dict.fromkeys(['name', 'pwd', 'hobby'], [])
print(l1) # {'name': [], 'pwd': [], 'hobby': []}
l1['name'].append('jason')
l1['pwd'].append(123)
l1['hobby'].append('music')
print(l1) # 不能一起添加
'''当第二个公共值是可变类型的时候
一定要注意 通过任何一个键修改都会影响所有
'''
l2 = user_dict.setdefault('username', 'tony')
print(user_dict, l2) # 键存在不修改,结果的键是对应的值jason
l2 = user_dict.setdefault('age', 123)
print(user_dict, l2) # 不存在则新增,结果是新增的值
user_dict.popitem() # 弹出键值对,后进先出
元组相关操作
1.类型转换
tuple()
ps:支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法
l1 = (11, 22, 33, 44, 55, 66)
1.索引取值
print(l1[0])
2.切片操作
print(l1[1:5]) # (22, 33, 44, 55)
print(l1[-5:-1]) # 默认从左到右
3.间隔方向
print(l1[1:5:2]) # (22, 44)
print(l1[-1:-5:-1]) # (66, 55, 44, 33)反方向
4.统计元组内数据的长度
print(len(l1)) # 6个
5.统计元组内指定数据值的个数
print(l1.count(22)) # 1个
6.统计元组内指定数据值的索引值
print(l1.index(22)) # 索引值1
7.元组内如果只有一个数据值那么逗号不能少
8.元组内索引绑定的内存地址不能被修改(可变与不可变)
9.元组不能新增或删除数据
集合相关操作
1.类型转换
set()
集合内数据必须是不可变类型(整型、浮点型、字符串、 元组)
集合内数据也是无序的,没有索引的概念
2.集合需要掌握的办法:
去重
关系运算
注意:只有遇到上述两种需求的时候才应该考虑使用集合,集合里面无序的,不能索引
3.去重
s1 = {11, 22, 11, 22, 22, 11, 222, 11, 22, 33, 22}
l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
s1 = set(l1) # 列表转集合
l1 = list(s1) # 集合转列表
print(l1)
# 集合的去重取法保留原先数据的排列顺序
4.关系运算
群体之间做差异化校验
eg:两个微信账户之间,有不同的好友 有相同的好友
s1 = {11, 22, 11, 22, 22, 11, 222, 11, 22, 33, 22}
l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
s1 = set(l1) # 列表转集合
l1 = list(s1) # 集合转列表
print(l1)
集合的去重取法保留原先数据的排列顺序
l1 = {'jason', 'tony', 'jerry', 'oscar'}
l2 = {'jacd', 'jason', 'tom', 'tony'}
1.求两个人的共同好友
print(l1 & l2) # {'tony', 'jason'}
2.求用户1独有的好友
print(l1 - l2) # {'oscar', 'jerry'}
求用户2独有的好友
print(l2 - l1) # {'jacd', 'tom'}
3.求两个人所有的好友
print(l1 | l2) # {'oscar', 'tom', 'jason', 'jerry', 'tony', 'jacd'}
4.求两个人独有的好友
print(l1 ^ l2) # {'jerry', 'oscar', 'tom', 'jacd'}
5.父集 子集
print(l1 > l2)
print(l1 < l2)
字符编码理论
1.字符编码只针对文本数据
2.计算机内部存储数据的本质 # 0 1
3.既然计算机内部只认识01 为什么我们却可以敲出人类各式各样的字符
肯定存在一个数字跟字符的对应关系 存储该关系的地方称为>>>:字符编码本
4.字符编码发展史
4.1.一家独大
计算机是由美国人发明的 为了能够让计算机识别英文
需要发明一个数字跟英文字母的对应关系
ASCII码:记录了英文字母跟数字的对应关系
用8bit(1字节)来表示一个英文字符
4.2.群雄割据
中国人
GBK码:记录了英文、中文与数字的对应关系
用至少16bit(2字节)来表示一个中文字符
很多生僻字还需要使用更多的字节
英文还是用8bit(1字节)来表示
日本人
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是自己定制的编码本
不同国家的文本数据无法直接交互 会出现"乱码"
"""
4.3.天下一统
unicode万国码
兼容所有国家语言字符
起步就是两个字节来表示字符
utf系列:utf8 utf16 ...
专门用于优化unocide存储问题
英文还是采用一个字节 中文三个字节
字符编码实操
1.针对乱码不要慌 切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes类型数据.decode()
3.python2与python3差异
python2默认的编码是ASCII
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
作业
1.
2.
# 去重下列列表并保留数据值原来的顺序
# eg: [1,2,3,2,1] 去重之后 [1,2,3]
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5] # 条件
# 2.创建一个空列表用来存放索引l1的数据
l2 = []
for i in l1: # 循环列表l1
if i in l2: # 如果得到的数字已经存在在列表l2
continue # 结束本次循环重新开始
else: # 如果不是则
l2.append(i) # 将获得的数字添加进列表L2
l1 = l2 # 将l1与l2列表绑定
print(l1) # 输出l1 [2, 3, 1, 4, 5, 6]
3.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs={'kermit', 'tony', 'gangdan'}
1. 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs) # {'gangdan'}
2. 求出所有报名的学生名字集合
# print(pythons | linuxs)
"""
{'gangdan', 'jason', 'kevin', 'ricky', 'tony', 'biubiu', 'kermit', 'oscar'}
"""
3. 求出只报名python课程的学员名字
# print(pythons - linuxs)
"""
{'kevin', 'biubiu', 'jason', 'oscar', 'ricky'}
"""
4. 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs)
"""
{'tony', 'jason', 'kermit', 'ricky', 'oscar', 'kevin', 'biubiu'}
"""
标签:内置,22,数据类型,dict,user,l1,print,l2,方法
From: https://www.cnblogs.com/zhanghong1229/p/16745895.html