python set 知多少 |
您所在的位置:网站首页 › v105和v105s怎么区分 › python set 知多少 |
各种资源搜索下载!18元 购买联系QQ:1435216645 很好用的python set 1.python set的基本使用方法1.python set 支持的对象1.1 set可针对一维list或者array1.2 mat类型及超过一维list、array均不支持 2.使用set()对整型list排序3.两个set的运算3.1 两个列表的交集 (与)3.2 两个列表的并集(或)3.3 差集:在列表A,而不在列表B3.4 补集:在列表A,不在列表B 或 在列表B,不在列表A (异或) 4.见证set的速度参考文献 为什么要在python中使用set? 一个字:快。 1.python set的基本使用方法和list大致类似,详见参考文献1. 方法功能set()初始化len(s)集合s中元素的数量add(elem)将元素 elem 添加到集合remove(elem))从集合中移除元素 elem。 如果 elem 不存在于集合中则会引发 KeyErrordiscard(elem)如果元素 elem 存在于集合中则将其移除pop()从集合中移除并返回任意一个元素。 如果集合为空则会引发 KeyErrorclear()从集合中移除所有元素 1.python set 支持的对象 1.1 set可针对一维list或者array import numpy as np cc=[[1,2,3,4,5,6,4,6]] #这里相当于是二维 aa=cc[0] #需要进行如下操作才可以使用set函数 set(aa) #Out: {1, 2, 3, 4, 5, 6}或: aa=np.array(cc[0]) set(aa) 1.2 mat类型及超过一维list、array均不支持如: import numpy as np cc=[[1,2,3,4,5,6,4,6]] aa=cc 或者 aa=np.array(cc) set(aa)则提示错误: TypeError: unhashable type: 'list' 或者 unhashable type: 'numpy.ndarray' 2.使用set()对整型list排序set()集合不仅可以删除list中重复的元素,而且还集成了自动升序排序的功能。还是蛮强大的。 但这里有一个坑,当整型list中有负元素时… 在这里插入代码片 a=[3,5,2,8,6,0] #a=[3,5,2,8,6,0,-2] b=[7,6,8,3,1] a.extend(b) print(list(set(a))) #输出结果为: #[0, 1, 2, 3, 5, 6, 7, 8]但是如果集合中存在负整数: 在这里插入代码片 #a=[3,5,2,8,6,0] a=[3,5,2,8,6,0,-2] b=[7,6,8,3,1] a.extend(b) print(list(set(a))) #神奇的一幕出现了 #输出为:[0, 1, 2, 3, 5, 6, 7, 8, -2]这一点有点坑。 因此保险的方式还是再用一次sort()或sorted()刷一遍吧。 3.两个set的运算随机生成两个大列表a,b,逐个判断b中元素是否在a中,并返回结果。 import numpy as np a=np.random.randint(0,10000,10000000).tolist() b=np.random.randint(0,10000,10000).tolist()如果用直接用list: import time t0=time.time() res=[] for item in b: res.append(item in a) t1=time.time() print(t1-t0) #out: 2.1071205139160156如果通过set进行查找: import time st=set(a) t0=time.time() res=[] for item in b: res.append(item in st) t1=time.time() print(t1-t0) #out: 0.0030002593994140625可见,通过set进行元素查找效果很高。 参考文献[1] https://docs.python.org/zh-cn/3.9/library/stdtypes.html?highlight=set#set |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |