python数据类型(集合、字典、浮点型)

python数据类型(集合、字典、浮点型)

常见的数据类型:

  • int,整数类型(整形)
  • bool,布尔类型
  • str,字符串类型
  • list,列表类型
  • tuple,元组类型
  • dict,字典类型
  • set,集合类型
  • float,浮点类型(浮点型)

目标:掌握字典、集合、浮点类型相关知识。

课程概要:

  • set集合,一个不允许重复重复 & 可变类型(元素可哈希)。
  • dict字典,一个容器且元素必须是键值对。
  • float类型,我们生活中常见的小数。

1.集合(set)

集合是一个 无序 、可变、不允许数据重复的容器。

1.1 定义

  • 定义空集合时,只能使用v = set(),不能使用 v={}(这样是定义一个空字典)
v1=set()
v1={11,22,33}
  • 无序,无法通过索引取值。

  • 可变,可以添加和删除元素。

    v1.add()
    
  • 不允许数据重复。(想要维护一大堆不重复的数据时,可以用集合)

1.2 独有功能

1.2.1 添加元素

  • data.add()

1.2.1 删除元素

  • data.discard()

1.2.3 交集

  • s4 = s1.intersection(s2) # 取两个集合的交集
  • s4 = s1 & s2 # 取两个集合的交集

1.2.4 并集

  • s4 = s1.union(s2) # 取两个集合的并集
  • s4 = s1 | s2 # 取两个集合的并集

1.2.5 差集

  • s4 = s1.difference(s2) 差集,s1中有,且s2中没有的值
  • s3 = s1 - s2 差集,s1中有,且s2中没有的值

1.3 公共功能

1.3.1 减,计算差集

  • s4 = s2 - s1

1.3.2 计算交集 &

  • s4 = s1 & s2

1.3.3 计算并集 |

  • s4= s1 | s2

1.3.4 长度

  • data = len(v)

1.3.5 for循环

for item in v:
	print(item)

1.4 转换

  • 其他类型如果想要转换为集合类型,可以通过set进行转换,并且如果数据有重复自动剔除。

提示:int/list/tuple/dict都可以转换为集合。(其实也是去重的一个手段)

1.5其他

1.5.1 集合的存储原理

  • 利用哈希函数变为一个数值,取余数,找索引位置。

1.5.2 元素必须可哈希

  • 因存储原理,集合的元素必须是可哈希的值,即:内部通过哈希函数把值转换成一个数字。
  • 目前可哈希的数据类型:int、bool、str、tuple,而list、set是不可哈希的。
  • 总结:集合的元素只能是 int、bool、str、tuple 。

1.5.3 查找速度特别快

  • 因存储原理特殊,集合的查找效率非常高(数据量大了才明显)。

1.5.4 比对和嵌套

类型是否可变是否有序元素要求是否可哈希转换定义空
listlist(其他)v=[]或v=list()
tupletuple(其他)v=()或v=tuple()
set可哈希set(其他)v=set()
  • 注意:由于True和False本质上存储的是 1 和 0 ,而集合又不允许重复,所以在整数 0、1和False、True出现在集合中会有如下现象:

    v1 = {True, 1}
    print(v1)  # {True}
    

强插:None类型

  • Python的数据类型中有一个特殊的值None,意味着这个值啥都不是 或 表示空。 相当于其他语言中 null作用一样。

  • 在一定程度上可以帮助我们去节省内存。

  • 注意:暂不要考虑Python内部的缓存和驻留机制。

  • 目前所有转换为布尔值为False的值有:

0
""
[] or list()
() or tuple()
set()
None

2.字典

字典是 无序键不重复 且 元素只能是键值对可变的容器

data = { "k1":1,  "k2":2 }
  • 容器

  • 元素必须键值对

  • 键不重复,重复则会被覆盖

  • 无序(在Python3.6+字典就是有序了,之前的字典都是无序。)

2.1 定义

v1 = {}
v2 = dict()

字典中对键值得要求:

  • 键:必须可哈希。 目前为止学到的可哈希的类型:int/bool/str/tuple;不可哈希的类型:list/set/dict。(集合)
  • 值:任意类型。
# 不合法
v1 = {
    [1, 2, 3]: '周杰伦',
    "age" : 18
  • 一般在什么情况下会用到字典呢?(当我们想要表示一组固定信息时,用字典可以更加的直观)

2.2 独有功能

2.2.1 获取值

  • .get()
# 例子
user_list = {
    "wupeiqi": "123",
    "alex": "uk87",
}

username = input("请输入用户名:")
password = input("请输入密码:")
# None,用户名不存在
# 密码,接下来比较密码
pwd = user_list.get(username)

if pwd == None:
    print("用户名不存在")
else:
    if password == pwd:
        print("登录成功")
	else:
        print("密码错误")
 # 写代码的准则:简单的逻辑处理放在前面;复杂的逻辑放在后面。

2.2.2 所有的键

  • .keys() (获取字典的所有键)

  • 注意:在Python2中 字典.keys()直接获取到的是列表,而Python3中返回的是高仿列表,这个高仿的列表可以被循环显示。(list)

2.2.3 所有的值

  • .values()(获取字典所有的值)
  • 注意:在Python2中 字典.values()直接获取到的是列表,而Python3中返回的是高仿列表,这个高仿的列表可以被循环显示。

2.2.4 所有的键值

  • .items()(获取字典所有的键值)
  • item是一个元组 (键,值)

2.2.5 设置值

  • .setdefault(“键”, 值)
  • 如果键存在,对应的值将不会修改,如果字典中没有对应的键,则会添加

2.2.6 更新字典键值对

  • .update( {“键”:值} )

  • 字典中没有的键直接添加;有的键则更新值

2.2.7 移除指定键值对

  • .pop(“键”)

2.2.8 按照顺序移除(后进先出)

  • .popitem()
  • py3.6后,popitem移除最后的值。
  • py3.6之前,popitem随机删除。

2.3 公共功能

2.3.1 求并集 (Python3.9新加入)

  • v3 = v1 | v2

2.3.2 长度

  • data = len(info)

2.3.3 是否包含

  • v1 = “age” in info

2.3.4 索引(键)

  • 字典不同于元组和列表,字典的索引是,而列表和元组则是 0、1、2等数值

  • 通过键为索引去获取之后时,键不存在会报错(以后项目开发时建议使用get方法根据键去获取值)

    info = { "age":12,  "status":True, "name":"武沛齐"}
    
    print( info["age"] )  	    # 输出:12
    
    
    value = info.get("xxxxx") # None
    print(value)
    

2.3.5 修改

  • 根据键 修改值 和 添加值 和 删除键值对
  • 通过键可以找到字典中的值,通过键也可以对字典进行添加和更新操作
info = {"age": 12, "status": True, "name": "张三"}
if "age" in info:

    # del info["age"]  可以用del或者pop
    data = info.pop("age")
    print(info)
    print(data)
else:
    print("键不存在")

2.3.6 for循环

  • 由于字典也属于是容器,内部可以包含多个键值对,可以通过循环对其中的:键、值、键值进行循环;
info = {"age":12, "status":True,"name":"张三"}
for item in info:
	print(item)  # 所有键
info = {"age":12, "status":True,"name":"张三"}
for key,value in info.items():    
	print(key,value)

2.4 转换

  • 想要转换为字典.

  • v = dict( )

    info = { "age":12, "status":True, "name":"张三" }
    
    v1 = list(info)        # ["age","status","name"]
    
    v2 = list(info.keys()) # ["age","status","name"]
    
    v3 = list(info.values()) # [12,True,"张三"]
    
    v4 = list(info.items()) # [ ("age",12), ("status",True), ("name","张三") ]
    

2.5 其他

2.5.1 存储原理

  • 利用字典键找对应的值。

2.5.2 速度快

  • 键唯一对应值

2.5.3 嵌套

  • 字典的键必须可哈希(list/set/dict不可哈希)。
  • 字典的值可以是任意类型。
  • 字典的键和集合的元素在遇到 布尔值 和 1、0 时,需注意重复的情况。
  • 元组的元素不可以被替换。

3.浮点型(float)

  • 浮点型,一般在开发中用于表示小数。

  • 关于浮点型的其他知识点如下:

    • 在类型转换时需要,在浮点型转换为整型时,会将小数部分去掉。(int())
    • 想要保留小数点后N位(round(V1,位数))
  • 在项目中如果遇到精确的小数计算使用如下

    import decimal
    v1 = decimal.Decimal("0.1")
    v2 = decimal.Decimal("0.2")
    v3 = v1 + v2
    print(v3) # 0.3
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值