python 数据类型 之 集合

集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合

集合的三个特性:

  1.确定性 (element必须可hash,不可变类型是可hash的)

  2.互异性(集合中element 不能重复)

  3.无序性(集合中没有先后之分,例如集合:{3,4,6}  等于{6,4,3})

  #集合的存在意义在于去重和关系运算

集合的定义:

st = set(‘hello‘)lis = list(‘hello‘)print(st)# {‘h‘, ‘o‘, ‘l‘, ‘e‘}print(lis)# [‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]# 【注意】dic={}#空花括号{},代表定义字典print(‘dic type:%s‘%type(dic))>>:dic type:<class ‘dict‘>st = {‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘}#定义的时候集合内出现了重复的项,但是并没有报错,只是剔除了重复elementprint(st)# {‘h‘, ‘o‘, ‘l‘, ‘e‘}

1)集合是无序的, 不重复的数据类型; 2)因此不支持索引,也不支持切片;也不支持重复;也不支持连接; 3)支持成员操作符; 4)支持for循环;
# print(type(set([i for i in range(0, 9)])))lis = [i for i in range(0, 9)]d = {}.fromkeys(lis)# print(type(d))# print(d)# print(d.keys())# for key in d.keys():#     print(key)

st = set([i for i in range(0, 3)])# print(‘st type:%s st:%s‘ % (type(st), st))# st type:<class ‘set‘> st:{0, 1, 2}

# 增加 element

st.add(‘new element‘)st2 = {9, 8, 7, }

#更新st.update(st2)  # 可以看成集合的凭接吗st.update(‘t‘)  # 单个元素,或者是集合本身也可以进行拼接# st.add({‘b‘, ‘y‘})  # 报错   TypeError: unhashable type: ‘set‘# print(st)

# 查找 elements1 = set({i for i in range(1, 8)})s2 = set({i for i in range(6, 10)})

# 交集# print(s1 & s2)  # {6, 7}# print(s1.intersection(s2)) # {6, 7}# s1.intersection_update(s2)# print(s1) # {6, 7}

# 并集# print(s1 | s2)#        {1, 2, 3, 4, 5, 6, 7, 8, 9}# print(s1.union(s2))  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 差集# print(s1 - s2)# {1, 2, 3, 4, 5}# print(s2 - s1)# {8, 9}#st.difference(s2)## #对等差分   [取反 交集]# print(s1 ^ s2) #{1, 2, 3, 4, 5, 8, 9}
#超集和子集
boys = {‘zzy‘,‘yqw‘,‘dw‘,‘wzc‘,‘lyb‘,‘wym‘,‘chy‘}
zoudu = {‘wzc‘,‘lyb‘,‘wym‘}
girls = {‘lsy‘,‘mmf‘,‘syj‘}

#issuperset()  检测当前集合是否是另一个集合的超集
result = boys.issuperset(zoudu)
print(result)

#issubset()  检测当前集合是否是另一个集合的子集
result = zoudu.issubset(boys)
print(result)

#isdisjoint()  检测2个集合是否不存在交集  存在交集 False
result = boys.isdisjoint(girls)
print(result)

# 删除# print(st)# print(len(st))st.remove(‘new element‘)#删除指定的元素,不存在报错st.remove(2)# print(st.pop())#随机删除并且返回集合中某个值# print(st.pop())# print(st.pop())# print(st.pop())# print(st.pop())# print(st.pop())# print(st.pop())#假如集合没有元素了,会报错 KeyError: ‘pop from an empty set‘
st.discard(3)st.discard(3)#删除指定元素 假如元素不存在 不会报错

#清空集合st.clear()
#赋值集合new_st =st.copy()

print(st)

dic = {k: v for k, v in enumerate(range(2, 6))}# {0, 1, ‘t‘, 7, 8, 9}

print("dic type:%s  dic value:%s" % (type(dic), dic))# dic type:<class ‘dict‘>  dic value:{0: 2, 1: 3, 2: 4, 3: 5}

print(‘dic.pop:%s‘ % dic.pop(2))  # dic.pop:4
成员检测:result_in = 2 in stresult_not = 2 not in stprint(result_in)print(result_not)

集合推导式:st_1 = { key_value  for key_value in range(2,8) }

带有判断的集合推导式st_2 = { key_value  for key_value in range(2,17) if (key_value%2)==1 }


#冰冻集合
#冰冻集合是一种特殊的集合类型,也是集合(集合是列表的话,冰冻集合就是元组)
#创建冰冻集合
#一般不会创建空的冰冻集合
var = frozenset()
print(var,type(var))

#带有数据的冰冻集合
var = frozenset((‘qs‘,‘szx‘,‘bjh‘,‘acs‘))# 不可变集合
print(var,type(var))

#成员检测
result = ‘szx‘ in var
print(result)

#遍历冰冻集合
for i in var:
    print(i)

#集合推导式(无法得到冰冻集合,可以得到集合,列表,元组,字典类型)
result = {i for i in var}
print(result,type(result))

#函数
#冰冻集合可以使用集合的函数(不修改集合本身的函数都可以使用)
var = frozenset((‘qs‘,‘szx‘,‘bjh‘,‘acs‘))

#copy()
result = var.copy()
print(result)

#集合操作  交集,并集,差集,对称差集等  不修改冰冻集合本身就能使用:冰冻集合的操作结果都是冰冻集合
var1 = frozenset((‘qs‘,‘szx‘,‘bjh‘,‘acs‘))
var2 = {‘szx‘,‘bjh‘,‘lc‘,‘wb‘}

#冰冻集合操作
result = var1.union(var2)
print(result)

#普通集合操作(冰冻集合是参考集合)
result = var2.union(var1)
print(result)


原文地址:https://www.cnblogs.com/yanxiatingyu/p/9279836.html

时间: 2024-08-30 12:12:15

python 数据类型 之 集合的相关文章

7、python数据类型之集合set

数据类型之集合setset 不允许重复的无序集合,不能通过下标取值,因为无序1.创建   创建空集合   s ={} 默认类型为字典,所以不是空集合,空集合如下   s = set()   s = {11,12,12,34,23} #字典是有键值对,集合没有   s = set()#括号内可以接收可以迭代的元素,str list tuple dict2.转换   s = ([11,123,1234,12345])   l = "123"   l = [1,2,3,4]   l = (1

python 数据类型之集合

一.集合的定义: 定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key. 特性:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 二.集合的创建: {1,2,3,1}或定义可变集合set>>> set_test=set('hello')>>> set_test{'l', 'o', 'e', 'h'}改为不可变集合frozenset>>> f_set_test=frozenset(set

Python数据类型-8 集合set

集合set set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素.集合使用大括号({})框定元素,并以逗号进行分隔.但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ,因为后者创建的是一个空字典. 集合数据类型的核心在于自动去重. s = set([1,1,2,3,3,4]) s {1, 2, 3, 4} # 自动去重 ------------------------------------- >>> set("this is test&quo

Python 数据类型之 集合 set

####集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 1.去重,把一个列表变成集合,就自动去重了. 2.关系测试,测试两组数据之前的交集.差集.并集等关系. #创建集合 ##创建集合 set1 = set({1,2,3}) print(set1) set2 = {1,2,3,[1,2],{"name":"span"}}#集合里的元素必须是不可变数据类型 pri

python数据类型之集合(set)和其常用方法

集合是一个无序的,不重复的数据组合 作用(集合的重点):1.去重,把一个列表变成集合就自动去重了2.关系测试,测试两组数据库之前的交集.差集.并集等关系 s = {1, 1, 2, 2, 3, 4, 'a', 'a', '!', '!'} print(type(s)) # <class 'set'> print(s) # 自动去重 {1, 2, 3, 4, 'a', '!'} # add 增加值,不能加一样的.只能加1个值,加多个值会报错 # pop 随机删除一个值,因为集合是无序的 # re

python学习[第十二篇] 数据类型之 集合

python学习[第十二篇] 数据类型之 集合 集合概念 python中集合是一组无序排列的哈希值.集合分为两种可变集合(set)和不可变集合(frozenset) 对可变集合可以修改和删除元素,对于不可变集合不允许.可变集合是不可以哈希的,因此既不能用作字典的键,也不能做其他集合的元素. 集合的增删改查 集合的创建于赋值 集合与列表([]) 和字典({})不同,集合没有特别的语法格式.列表和字典可以通过他们自己的工厂方法创建,这也是集合的唯一的创建方式.set()和frozenset() #创

Python之路【第四篇】python基础 之基本数据类型之集合

基本数据类型之集合 set set集合,是一个无序且不重复的元素集合 1 # set 不允许重复的集合 set允许重复的列表但是集合是无序的 2 #例如 3 # s = {1,23,23,4,55,55} 4 # print(s) # 结果 {1, 4, 23, 55} 5 6 # 1.创建 7 # s = set() 8 # s = {11,22,33,44} 9 10 # 2.转换 11 # l = list() 12 # s = set() #创建集合 13 # s = set([11,2

Python数据类型及其方法详解

Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知识回顾. 一.整型和长整型 整型:数据是不包含小数部分的数值型数据,比如我们所说的1.2.3.4.122,其type为"int" 长整型:也是一种数字型数据,但是一般数字很大,其type为"long" 在python2中区分整型和长整型,在32位的机器上,取值范围是-2

python数据类型整理

Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) 序列中的每个元素都有自己的编号.Python中有6种内建的序列.其中列表和元组是最常见的类型.其他包括字符串.Unicode字符串.buffer对象和xrange对象.下面重点介绍下列表.元组和字符串. 1.列表 列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. (1).创