字典常用API、集合基础以及数据类型基础

一.字典常用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

        各种数据类型的转换就不赘述了,去找每个数据的创键过程复习。还有就是,像字符串转整数是会报错的,需要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值