一.字典常用API
# 查看字典长度,即键值对个数
a = {'name':'zhangsan','age':18,'sex':'male'}
print(len(a))
# str()把字典[字面量]变为字符串,网络传输常把这种字符串(json)传输
a = {'name':'zhangsan','age':18,'sex':'male'}
print(str(a),type(str(a)))
# 清空字典
a = {'name':'zhangsan','age':18,'sex':'male'}
a.clear()
print(a)
#浅复制
a = {'name':'zhangsan','age':18,'sex':'male'}
b = a.copy()
print(b)
#访问键值对 get(key,x),x为找不到键时的返回值,默认为None
a = {'name':'zhangsan','age':18,'sex':'male'}
print(a.get('name'))
print(a.get('address','not found'))
# 以列表返回一个视图(可迭代)对象,即一个一个打包的键值对 items()
a = {'name':'zhangsan','age':18,'sex':'male'}
print(a.items(),type(a.items()))
# 返回一个键的迭代器 keys()
a = {'name':'zhangsan','age':18,'sex':'male'}
print(a.keys(),type(a.keys()))
# 返回一个值的迭代器 values()
a = {'name':'zhangsan','age':18,'sex':'male'}
print(a.values(),type(a.values()))
# 更新整个字典 update(),类似append和extend
a = {'name':'zhangsan','age':18,'sex':'male'}
b = {'address':'beijing','phone':'123456789'}
a.update(b)
print(a)
# 删除字典中的键值对 pop(key,x),x为找不到键时的返回值,默认为None
a = {'name':'zhangsan','age':18,'sex':'male'}
print(a.pop('name'))
print(a.pop('address','not found'))
3
{'name': 'zhangsan', 'age': 18, 'sex': 'male'} <class 'str'>
{}
{'name': 'zhangsan', 'age': 18, 'sex': 'male'}
zhangsan
not found
dict_items([('name', 'zhangsan'), ('age', 18), ('sex', 'male')]) <class 'dict_items'>
dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
dict_values(['zhangsan', 18, 'male']) <class 'dict_values'>
{'name': 'zhangsan', 'age': 18, 'sex': 'male', 'address': 'beijing', 'phone': '123456789'}
zhangsan
not found
二.集合
2.1 集合基本介绍
集合分set和固定集合frozenset
set的元素值必须是不可变的,不能存储 list、dict 等可变类型。
- 集合是可变的容器,固定集合是不可变的集合
- 集合内的数据绝对不同
2.2 集合创建
#set()创建
a = set([1,2,3,4,5])
print(a,type(a))
#空集合 注意:空集合创建必须用set(),不能用{}
a = set()
b = {}
print(a,type(a))
print(b,type(b))
#与列表的联合应用,set()是允许里面是列表的
a = [1,2,3,4,5,6,1,2,2,3]
b = set(a)
print(b)
{1, 2, 3, 4, 5} <class 'set'>
set() <class 'set'>
{} <class 'dict'>
{1, 2, 3, 4, 5, 6}
来三个容易绕住你的问题 >V<
# a里有几个数据
a = {(10,20,30),(20,10,30)}
print(a)
# a中数据是什么
a = {(10),(10)}
print(a)
# a中数据该怎么写
a = {(10,),(10,)}
print(a)
{(20, 10, 30), (10, 20, 30)}
{10}
{(10,)}
总结:
一定要把基础学牢,前面的东西要学会
2.3 集合操作
#添加元素
a = {1,2,3}
a.add(4)
print(a)
#update()添加多个元素,实际为添加容器,不管是列表还是元组都会被取出数据传入
a = {1,2,3}
a.update([4,5,6],(7,8,9))
print(a)
#remove()删除元素,如果元素不存在,会报错
a = {1,2,3}
a.remove(1)
print(a)
#discard()删除元素,如果元素不存在,不会报错
a = {1,2,3}
a.discard(4)
print(a)
'''
pop()对集合某种排序(有但不清楚,所以其实是固定排序),删除第一个元素并显示,如果集合为空,会报错
方便记的,pop()就是随机删除一个元素并显示
'''
a = {1,2,3}
b = a.pop()
print(a)
print(b)
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{2, 3}
{1, 2, 3}
{2, 3}
1
注:尽管集合无序,但可以用for循环来遍历集合
2.4 判断集合是否含某元素
a = {1,2,3}
print(2 in a)
b = {1,2,3,4,5}
print(3 not in b)
True
False
2.5 集合常用API
# 添加元素
a = {1,2,3}
a.add(4)
print(a)
# 清空集合
a = {1,2,3}
a.clear()
print(a)
# 拷贝
a = {1,2,3}
b = a.copy()
print(b)
# 返回差集
a = {1,2,3}
b = {2,3,4}
print(a.difference(b))
print(a)
# 返回差集并删除该集合其他元素
a = {1,2,3}
b = {2,3,4}
a.difference_update(b)
print(a)
print(b)
# 返回交集
a = {1,2,3}
b = {2,3,4}
print(a.intersection(b))
# 返回交集并删除该集合其他元素
a = {1,2,3}
b = {2,3,4}
a.intersection_update(b)
print(a)
print(b)
# 判断两个集合是否完全不同
a = {1,2,3}
b = {2,3,4}
print(a.isdisjoint(b))
# 判断前集合是否为后集合子集
a = {1,2,3}
b = {2,3}
print(a.issubset(b))
# 判断后集合是否为前集合子集
a = {1,2,3}
b = {2,3}
print(a.issuperset(b))
# 返回俩集合不重复的元素,I为并集,即 U-I
a = {1,2,3}
b = {2,3,4}
print(a.symmetric_difference(b))
print(a)
# 返回俩集合不重复的元素,删除其他元素
a = {1,2,3}
b = {2,3,4}
a.symmetric_difference_update(b)
print(a)
# 返回俩集合的并集
a = {1,2,3}
b = {2,3,4}
print(a.union(b))
# 看集合长度
a = {1,2,3}
print(len(a))
{1, 2, 3, 4}
set()
{1, 2, 3}
{1}
{1, 2, 3}
{1}
{2, 3, 4}
{2, 3}
{2, 3}
{2, 3, 4}
False
False
True
{1, 4}
{1, 2, 3}
{1, 4}
{1, 2, 3, 4}
3
三.可变与不可变数据
两者的区别:
可变类型修改内容时,不会改变地址;
不可变类型改值时,Python会创建一个新的对象,地址改变。
# 可变类型
a = [1,2,3]
print(id(a))
a.append(4)
print(id(a))
#不可变类型
a = 1
print(id(a))
a = a + 1
print(id(a))
2711527596416
2711527596416
140732630124984
140732630125016
四.类型判断
#判断是否属于指定类型
a = 1
print(isinstance(a, dict))
#判断是否属于多个类型之一
str1 = 'abc'
print(isinstance(str1, (int, str)))
False
True
注:还有一个特别的判断
# 判断空值
a = None
print(isinstance(a, NoneType))
a = None
print(isinstance(a, None))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[97], line 3
1 # 判断空值
2 a = None
----> 3 print(isinstance(a, NoneType))
5 a = None
6 print(isinstance(a, None))NameError: name 'NoneType' is not defined
这里写一起因为两个测试之后其实是都不行的,需要注意。
五.类型转换API
# 将数字转化为对应字符
a = 97
b = chr(a)
print(b)
# 将字符转化为数字
a = 'A'
b = ord(a)
print(b)
# 用Python表达式运行并返回结果
a = eval('2+3*4')
print(a)
# 这里常常和.join()结合使用
a = ["1","2"]
b = "+".join(a)
print(b)
print(eval(b))
a
65
14
1+2
3
各种数据类型的转换就不赘述了,去找每个数据的创键过程复习。还有就是,像字符串转整数是会报错的,需要注意。