python3内建模块-set类

1、介绍

builtins.py文件中定义了set类,用于处理python中集合数据。

set也是python的基本数据类型之一。

  • 集合是单列的元素集合,用{}包围,内部元素之间用,分隔
  • 集合的元素可以是任意类型,且某一集合中可以同时包含不同类型
  • 集合定义后可以进行增删改
  • 集合不支持数值索引
  • set是无序集合,即元素会自动排序和去重,默认是降序

2、类

class set(object):
    def __init__(self, seq=()):
        pass

3、字面量初始化

print({12, '45', 35, 35})
print({12, '45', 35})
print({12, '45'})

4、类初始化

  • 类初始化,参数只能最多有一个,为可迭代对象,否则会报错
  • 创造一个空集合,必须使用类初始化,字面量无法创造空集合对象
set()
print(set("abc"))

5、属性

6、方法

(1)update

update(self, s)
  • s,必要参数,类型是集合元素,类型错误报错:TypeError: ‘int’ object is not iterable
  • 对于已经存在的则不更新,对于不存在的元素则添加进去并排序

set1 = set((1,2,5))
set1.update({2,"fd"})
print(set1)#{'fd', 1, 2, 5}

(2)add

add(self, element)
  • element为必要参数,可以是数值,字符串和元组,不能是set,list等类型,报错:TypeError: unhashable type: ‘list’
  • 方法是添加元素

(3)difference

difference(self, s)
  • s必要参数,必须是可迭代对象
  • 方法是集合与参数中的迭代对象比较,返回集合元素在参数迭代对象中不存在的元素集合
  • 不对原对象产生影响
set1 = set((1,2,5))
set2 = {1,2,9,10}

print(set1.difference(set2))#{5}

(4)difference_update

difference_update(self, s)
  • 参考difference,将不同集合元素作为集合赋值给对象
set1 = set((1,2,5))
set2 = (1,2,9,10)

print(set1.difference_update(set2))#None
print(set1)#{5}

(5)discard

discard(self, element)
  • element是必要参数,如果类型是数值且存在,则从集合中移除,否则不做任何事,不会报错
  • 返回None

(6)intersection

intersection(self, s)
  • s为必要参数,类型为可迭代对象。
  • 方法是集合对象与可迭代参数对象的元素比较,取交集作为返回集合的元素
  • 不对原集合产生影响
set1 = set((1,2,5))
set2 = (1,'2',9,10)

print(set1.intersection(set2))#{1}

(7)intersection_update

intersection_update(self, s)
  • s为必要参数,类型为可迭代对象。
  • 方法是集合对象与可迭代参数对象的元素比较,取交集作为返回集合的元素赋值给原集合对象
  • 返回None
set1 = set((1,2,5))
set2 = (1,'2',9,10)

print(set1.intersection_update(set2))#None
print(set1)#{1}

(8)isdisjoint

isdisjoint(self, s)
  • s为必要参数,可迭代对象
  • 如果两个集合没有任何交集,返回True

(9)issubset

issubset(self, s)
  • s为必要参数,可迭代对象
  • 如果s包含当前集合,返回True

(10)issuperset

issuperset(self, s)
  • s为必要参数,可迭代对象
  • 如果当前集合包含s,返回True

(11)symmetric_difference

symmetric_difference(self, s)
  • s为必要参数,可迭代对象
  • 方法是集合对象与可迭代参数对象的元素比较,取两个对象中交集对象之外的元素作为返回集合的元素,即只在一个对象中包含的元素
  • 不对原集合产生影响
set1 = set((1,2,5))
set2 = (1,2,9)

print(set1.symmetric_difference(set2))#{5, 9}
print(set1)#{1, 2, 5}

(12)symmetric_difference_update

symmetric_difference_update(self, s)
  • s为必要参数,可迭代对象
  • 方法是集合对象与可迭代参数对象的元素比较,取两个对象中交集对象之外的元素作为返回集合的元素赋值给原集合,即只在一个对象中包含的元素
  • 返回None

(13)union

union(self, s)
  • s为必要参,可迭代对象
  • 方法是返回并集
  • 不对原集合产生影响
set1 = set((1,2,5))
set2 = (1,2,9)

print(set1.union(set2))#{1, 2, 5, 9}
print(set1)#{1, 2, 5}

(14)其他

copy、remove、pop、clear

7、运算

元组不支持对元素赋值、del,但是拼接+、复制*和赋值=是可以的,也支持in和not in

集合不支持索引操作,也不支持拼接+、复制*。但支持集合运算,必须双方都是集合。

print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素
posted @ 2023-07-11 13:37  挖洞404  阅读(31)  评论(0编辑  收藏  举报