首页 > 编程语言 >python 13

python 13

时间:2024-01-26 21:33:39浏览次数:32  
标签:info 13 python True age v1 print data

1.集合(set)

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

1.1定义

v1 = {11,22,33,"alex"}
  • 无序,无法通过索引取值。
  • 可变,可以添加和删除元素。
v1 = {11,22,33,44}
v1.add(55)
print(v1)#{33, 11, 44, 22, 55}
  • 不允许数据重复
v1 = {11,22,33,44}
v1.add(22)
print(v1)#{33, 11, 44, 22}

注意:定义空集合时,只能使用v = set(),不能使用v={}(这样是定义一个空字典)。

v1 = []
v1 = List()
v2 = ()
v2 = tuple()
v3 = set()
v4 = {}
v4 = diet()

1.2独有功能

1.添加元素

data = {"刘嘉玲","关之琳","王祖赞"}
data.add("郑福林")
print(data)
data = set()
data.add("郑福林")
data.add("周杰伦")
print(data)

2.删除元素

data = {"刘嘉玲","关之琳","王祖赞","张曼玉","李若彤"}
data.discard("关之琳")
print(data)

3.交集

s1 = {"刘能","赵四","皮长山"}
s2 = {"刘科长","冯乡长","皮长山"}
s4 = s1.intersection(s2)#取两个集合的交集
print(s4)#{'皮长山'}
s3 = s1 & s2#取两个集合的交集
print(s3)#{'皮长山'}

4.并集

s1 = {"刘能","赵四","皮长山"}
s2 = {"刘科长","冯乡长","皮长山"}
s4 = s1.union(s2)#取两个集合的并集
print(s4)#{'赵四', '刘能', '冯乡长', '刘科长', '皮长山'}
s3 = s1 | s2#取两个集合的并集
print(s3)#{'赵四', '刘能', '冯乡长', '刘科长', '皮长山'}

5.差集

s1 = {"刘能","赵四","皮长山"}
s2 = {"刘科长","冯乡长","皮长山"}
s4 = s1.difference(s2)#{'刘能', '赵四'}
s6 = s1.difference(s2)#{'冯乡长', '刘科长'}
s3 = s1 - s2#{'刘能', '赵四'}
s5 = s2 - s1#{'冯乡长', '刘科长'}
print(s3,s4,s5,s6)

1.3公共功能

1.减,计算差集

s1 = {"刘能","赵四","皮长山"}
s2 = {"刘科长","冯乡长","皮长山"}
s3 = s1 - s2#{'刘能', '赵四'}
s5 = s2 - s1#{'冯乡长', '刘科长'}
print(s3,s5)

2.&,计算交集

s1 = {"刘能","赵四","皮长山"}
s2 = {"刘科长","冯乡长","皮长山"}
s3 = s1 & s2#取两个集合的交集
print(s3)#{'皮长山'}

3.|,计算并集

s1 = {"刘能","赵四","皮长山"}
s2 = {"刘科长","冯乡长","皮长山"}
s3 = s1 | s2#取两个集合的并集
print(s3)#{'赵四', '刘能', '冯乡长', '刘科长', '皮长山'}

4.长度

v = {"刘能","赵四","皮长山"}
data = len(v)
print(data)

5.for循环

v = {"刘能","赵四","皮长山"}
for item in v:
	print(item)

1.4转换

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

v1 = "吴佩琦"
v2 = set(v)
print(v2)#{'佩', '琦', '吴'}
v1 = [11,22,33,44,11,99]
v2 = set(v1)
print(v2)#{33, 99, 11, 44, 22}
v1 = (11,22,33,11)
v2 = set(v1)
print(v2)#{33, 11, 22}

提示:这是一个去重手段。

data = {11,22,33,3,99}
v1 = list(data)#[33, 99, 3, 22, 11]
v2 = tuple(data)#(33, 99, 3, 22, 11)

1.5其他

1.51集合的存储原理

image-20240124203042756

1.52元素必须可哈希

因存储原理,集合的元素必须是可哈希的值,即:内部通过哈希表把值转换成一个数字。

v1 = hash("吴佩琦")
print(v1)#785100499468713587
v2 = hash((11,22,33,44,))
print(v2)#8386256510965472093

目前可哈希的数据类型:int,bool,str,tuple而list,set是不可哈希的。

总结:集合的元素只能是:int,bool,str,tuple。

  • 转换成功
v1 = [11,22,33,3,99,22]
v2 = set(v1)
print(v2)#{33, 3, 99, 11, 22}
  • 转换失败
v1 = [11,22,33,["alex","eric"],99,22]
v2 = set(v1)#报错
print(v2)

1.53查找速度特别快

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

1.54对比和嵌套

image-20240124205006878

注意:由于True和False本质上存储的是1和0,而集合又不允许重复,所以在整数0,1和False,True出现在集合中会有如下现象:

v1 = {True,1}
print(v1)#{True}
v2 = {1,True}
print(v2)#{1}
v3 = {0,False}
print(v3)#{0}
v4 = {False,0}
print(v4)#{False}

强插:None类型

python的数据类型中有一个特殊的值none,意味着这个值啥都不是或表示空。相当于其他语言中null作用一样。在一定程度上可以帮助我们节省内存。例如:

v1 = None
v2 = None
...
v1 = [11,22,33,44]
v2 = [11,22,33]

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

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

2.字典(dict)

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

data = {"k1":1,"k2":2}
  • 容器
  • 元素必须键值对
  • 键不重复,重复则会被覆盖
data = {"k1":1,"k1":2}
print(data)#{'k1': 2}
  • 无序(在python3.6+字典就是有序了,之前的字典都是无序的)

2.1定义

v1 = {}
v2 = dict()
data = {
	"k1":1,
	"k2":2
}
info = {
	"age":12,
	"status":True,
	"name":"wupeiqi",
	"hobby":['篮球','足球']
}

字典中对键值的要求:

  • 键:必须可哈希。目前为止学到的可哈希的类型:int/bool/str/tuple;不可哈希的类型:list/set/dict。

  • 值:任意类型。

data_dict = {
	"吴佩琦":29,
	True:5,
	123:5,
	(11,22,33):["alex","eric"]
}
data_dict = {
	1:29,
	True:5
}
print(data_dict)#{1: 5}

2.2独有功能

1.获取值

info = {
	"age":12,
	"status":True,
	"name":"吴佩琦"
}
data1 = info.get("name")
print(data1)#吴佩琦
data2 = info.get("email")
print(data2)#None
data3 = info.get("hobby",123)
print(data3)#123

2.所有的键

info ={"age":12,"status":True,"name":"wupeiqi","eamail":"[email protected]"}
data = info.keys()
print(data)#dict_keys(['age', 'status', 'name', 'eamail'])
result = list(data)
print(result)#['age', 'status', 'name', 'eamail']

3.所有的值

info ={"age":12,"status":True,"name":"wupeiqi","eamail":"[email protected]"}
data = info.values()
print(data)#dict_values([12, True, 'wupeiqi', '[email protected]'])

4.所有的键值

info ={"age":12,"status":True,"name":"wupeiqi","eamail":"[email protected]"}
data = info.items()
print(data)
for item in info.items():
	print(item[0],item[1])#item是一个元组(键,值)
for key,value in info.items():
	print(key,value)#key代表键,value代表值,将键值从元组中直接拆分出来了。

5.设置值

data = {
	"name":"吴佩琦",
	"eamail":"[email protected]"
}
data.setdefault("age",18)
print(data)#{'name': '吴佩琦', 'eamail': '[email protected]', 'age': 18}
data.setdefault("name","alex")
print(data)#{'name': '吴佩琦', 'eamail': '[email protected]', 'age': 18}

6.更新字典键值对

info = {"age":12,"status":True}
info.update({"age":14,"name":"吴佩琦"})#info中没有的键直接添加;有的键则更新值
print(info)#{'age': 14, 'status': True, 'name': '吴佩琦'}

7.移除指定键值对

info = {"age":12,"status":True}
data = info.pop("age")
print(info)#{'status': True}
print(data)#12

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

info ={"age":12,"status":True,"name":"wupeiqi","eamail":"[email protected]"}
data = info.popitem()
print(info)#{'age': 12, 'status': True, 'name': 'wupeiqi'}
print(data)#('eamail', '[email protected]')
  • py3.6后,popitem移除最后的值。
  • py36之前,popitem随机删除。

2.3公共功能

1.求并集(python3.9新加入)

v1 = {"k1":1,"k2":2}
v2 = {"k2":22,"k3":33}
v3 = v1 | v2
print(v3)#{'k1': 1, 'k2': 22, 'k3': 33}

2.长度

info = {"age":12,"status":True,"name":"吴佩琦"}
data = len(info)
print(data)#3

3.是否包含

info = {"age":12,"status":True,"name":"吴佩琦"}
v1 = "age" in info
print(v1)#True
v2 = "age" in info.keys()
print(v2)#True

4.索引(键)

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

info = {"age":12,"status":True,"name":"吴佩琦"}
print(info["age"])#12
print(info["status"])#True
print(info["name"])#吴佩琦
value = info.get("name")
print(value)#吴佩琦

5.根据键修改值和添加值和删除键值对

info = {"age":12,"status":True,"name":"吴佩琦"}
info["gender"] = "男"
print(info)#{'age': 12, 'status': True, 'name': '吴佩琦', 'gender': '男'}
info = {"age":12,"status":True,"name":"吴佩琦"}
info["age"] = "18"
print(info)#{'age': '18', 'status': True, 'name': '吴佩琦'}
info = {"age":12,"status":True,"name":"吴佩琦"}
del info["age"]#删除info字典中键为age的那个键值对(键不存在则报错)
print(info)#输出{'status': True, 'name': '吴佩琦'}

6.for循环

由于字典也属于容器,内部可以包含多个键值对,可以通过循环对其中的:键,值,键值进行循环;

info = {"age":12,"status":True,"name":"吴佩琦"}
for item in info.keys():
	print(item)
info = {"age":12,"status":True,"name":"吴佩琦"}
for item in info.values():
	print(item)
info = {"age":12,"status":True,"name":"吴佩琦"}
for item in info.items():
	print(key,value)

2.4转换

想要转换为字典

v = dict([["k1","v1"],["k2","v2"]])
print(v)#{'k1': 'v1', 'k2': 'v2'}
info = {"age":12,"status":True,"name":"吴佩琦"}
v1 = list(info)#['age', 'status', 'name'] 
v1 = list(info.keys())#['age', 'status', 'name']
v1 = list(info.values())#[12, True, '吴佩琦'] 
v1 = list(info.items())#[('age', 12), ('status', True), ('name', '吴佩琦')]

2.5其他

2.51存储原理

image-20240126183449697

1.52速度快

info = {"age":12,"status":True,"name":"吴佩琦"}
for age in info:
	print("在")
info = {"age":12,"status":True,"name":"吴佩琦"}
v1 = info["age"]
v2 = info.get("age")
print(v1,v2)

2.5.3嵌套

我们已学了很多数据类型,在涉及多种数据类型之间的嵌套时,需要注意以下几点:

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

3.浮点型(float)

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

v1 = 3.14
v2 = 9.89

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

  • 在类型转换时需要,在浮点型转换为整形时,会将小数部分去掉。
v1 = 3.14
data = int(v1)
print(data)
  • 想要保留小数点后N位
v1 = 3,1415926
result = round(v1,3)
print(result)#3.142

image-20240126190436730

标签:info,13,python,True,age,v1,print,data
From: https://www.cnblogs.com/zhangyj213/p/17990778

相关文章

  • Codeforces Round 913 (Div
    ARook题目大意给一个国际象棋棋盘,有t次询问,每次询问给定一个棋子坐标s例如d4.问:输出这个棋子上下左右四个方向的坐标解题思路两个for循环暴力求解代码#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'constintINF=0x3f3f3f3f;voidso......
  • python--pyQt 基础框架代码 pyside6
    importsysfromPySide6importQtWidgets,QtCore,QtGuifromPySide6.QtCoreimportQt,QRectfromPySide6.QtGuiimportQColor,QEnterEventfromPySide6.QtWidgetsimportQApplication,QDialog,QMainWindow,QGraphicsDropShadowEffectimportyiqi_uiclassMain......
  • Python模块和包
    目录Python模块和包Python模块概述模块搜索路径import语句import<module_name>from<module_name>import<name(s)>from<module_name>importas<alt_name>import<module_name>as<alt_name>dir()函数将模块作为脚本执行重新加载模块Python包包初始化从包不import*子包结......
  • Python_numpy-增加以及修改维度
    gradio组件输入组件-输出组件输入输出组件 多输入和多输出组件gr.State是一个不可见的组件,目的是在后台存储一些变量方便访问和交互BlockcomponentsTextbox:interactiveinteractive=TrueEventlistenerchange()e......
  • python之常用标准库-random
    1.randomdefrandom(self):"""Getthenextrandomnumberintherange[0.0,1.0)."""return(int.from_bytes(_urandom(7),'big')>>3)*RECIP_BPF翻译:获取0,1之间的随机浮点数1#!/usr/bin/python2importrandom3p......
  • OpenAI 宣布将通过更新解决 GPT-4 变懒问题丨 RTE 开发者日报 Vol.135
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • 【链交理论】CF1336F Journey
    瞻仰遗迹,沐浴圣光。Description给出一颗\(n\)个节点的树,以及\(m\)条链,求有多少对链满足其交的边数\(\geqk\)。这个题其实有一个Hint是CF1486F,比这个简单了很多倍。Solution我们考虑用\((s,t,lca)\)来表示一条\(s\tot(dfn_s<dfn_t)\)的链,其中\(lca\)表......
  • Python中为何使用新语法而不是装饰器来实现async/await异步功能
    Python是一种多范式编程语言,通过引入新的语法和特性,不断提升其功能和灵活性。在异步编程领域,Python引入了async/await关键字来实现协程和异步操作,而不是使用已有的装饰器语法。本文将探讨为何Python选择引入新语法来实现async/await异步功能,以及与装饰器的区别和优势。一、理解异步......
  • 在 Python 中如何实现列表元素去重
    在日常的Python编程中,我们经常需要对列表进行去重操作,以便保证程序的正确性和效率。Python提供了多种方法来实现列表元素去重,本文将介绍其中的四种方法。一、使用set()函数set()函数是Python内置的去重函数,它可以使列表中的元素不重复,并将其转换为集合类型,最后再转换回列表类型。具......
  • 使用 Python 的 Paramiko 库实现远程文件复制
    本文将介绍如何使用Paramiko库在Python中实现远程访问并复制文件到本地。Paramiko是一个用于SSHv2协议的Python实现,它提供了简单而强大的功能来进行远程操作。我们将学习如何建立SSH连接、执行远程命令以及复制文件到本地。一、安装Paramiko首先,我们需要安装Paramiko库。可以使用pi......