python数据类型之‘集合’

1.集合的定义(set)

set1={1,2,3,'hello',(1,2,3)}

print(set1,type(set1)

set = {1,2,3,'hello',(1,2,3),[1,2,3]}

print(set,type(set))

s = {1, 2, 3, 4, 1, 2, 3}
print(s, type(s))

由以上实验我们知道,集合是一个无序的,不重复的数据组合。用{}创建集合时,其子对象不可以包含可变对象

如何定义一个空集

s3 = set([])
print(s3, type(s3))

s2 = {}   # 默认情况是dict, 称为字典
print(s2, type(s2))

 集合应用1: 列表去重

li = [1,2,3,1,2,3]
print(list(set(li)))

2.集合的特性

 集合支持的特性只有 成员操作符

索引, 切片, 重复, 连接,均不支持

1.成员操作符

s={1,2,3}
print(1 in {1,2,3})
print(1 not in s)

2.for循环

for i in s:
    print(i, end='|')

print()

for i, v in enumerate(s):
    print("index: %s, value:%s" %(i, v))

3.集合的常用操作

1.集合的添加

s.add(1)
在集合中添加一项


s.update([1,3,4])
在集合中添加多项,跟的参数应该是可迭代类型

在这里要注意,由于集合为可变, 无序数据类型,所以其添加的顺序和在集合中存储的顺序不同

s={1,2,3,5,6}
s.add(4)
print(s)

s={1,2,6}
s.update([2,3,4,5])
print(s)

2.集合的删除

s.remove(1)
删除集合中指定的元素


s.pop()
随机删除集合中的某个元素,并返回删除的元素

s={1,2,6}
s.update([2,3,4,5])
s.remove(4)
print(s)

s.clear()

清空集合中的所有元素

len(s)

求集合的长度

3.集合的关系测试

(交集、并集、差集、对等差分)

s1 = {1, 2, 3}
s2 = {2, 3, 4}

  并集
print("并集:",  s1.union(s2))
print("并集:",  s1 | s2)

 交集
print("交集:", s1.intersection(s2))
print("交集:", s1 & s2)

差集
print("差集:", s1.difference(s2))   # s1- (s1&s2)   ###s1中有的元素,s2中没有
print("差集:", s2.difference(s1))   # s2- (s1&s2)   ###s2中有的元素,s1中没有
print("差集:",s1-s2)
print("差集:",s2-s1)

对等差分: 并集-交集(两个集合中所有不共有的元素)
print("对等差分:", s1.symmetric_difference((s2)))
print("对等差分:", s1^s2)

s1 = {1, 2, 3}
s2 = {2, 3, 4}
print("并集:",  s1 | s2)
print("交集:", s1 & s2)
print("差集:",s1-s2)
print("差集:",s2-s1)
print("对等差分:", s1^s2)

(子集、父集、有无交集)

s3 = {1,2}
s4 = {1,2,3}
print(s3.issubset(s4))    ###判断s3为s4的子集,若是返回True
print(s3.issuperset(s4))  ###判断s3为s4的父集,若是返回True
print(s3.isdisjoint(s4))
   ###判断s3与s4没有交集,若确实没有交集返回True,若有返回False

练习:

1.随即产生2组各个数字的列表,每组10个数字,

要求:每个是数字的区值范围为[10,20]

统计20个数字中有多少个不同数字,

2组中不重复的数字有几个?分别是什么?

2组中重复的数字有几个?分别是什么?

s1=set([])
s2=set([])
import random
for i in range(1,10):
    count1 = random.randint(10,20)
    s1.add(count1)
for t in range(1, 10):
    count2 = random.randint(10, 20)
    s2.add(count2)
print(s1)
print(s2)
n1=s1|s2
n2=s1^s2
n3=n1-n2
print(n1,len(n1))
print(n2,len(n2))
print(n3,len(n3))

猜你喜欢

转载自blog.csdn.net/forever_wen/article/details/81675944