Python精通-Python集合操作详解

导语
  在前面的分享中说完了基本的数据类型,基本的数据类型有六种分别是数字、字符串、列表、元组、列表、以及布尔值。接下来说的就是在Python中比基本数据类型变量等知识更加深入的数据类型叫做集合

集合

定义

  由不同元素组成,并且元素是一组无序排列的可hash操作的值,也就是可以作为字典的key,也就是不可变的数据类型。

特性

  集合的目的是将不同的值放到一起,不同的集合之间用来做关系运行,不需要纠结集合中的元素。

创建集合

创建一个不可变集合

# 定义一个集合
s = {1,2,3,4,3,3,3,3,3,5}
# 定义一个字典
dic = {"name":"nihui","age":123}

v = type(s)
print(v)
print(s)

定义一个可变集合

set_test = set("hello")
set_test1 = set(["lell","test","set"])

print(set_test)
print(set_test1)

将这个集合变成一个不可变的集合

f_set_test = frozenset(set_test)
print(f_set_test)

集合基本操作

def add(self, *args, **kwargs)

向集合中添加对应的元素

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

def clear(self, *args, **kwargs)

表示清空一个集合

s = {1,2,3,4,3,5}

print(s)
s.clear()

print(s)

def copy(self, *args, **kwargs)

将已有的集合复制相同的一份

s = {1,2,3,4,3,5}
print(s)
v = s.copy()
print(v)

def pop(self, *args, **kwargs)

随机删除一个元素

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

v = s.pop()

print(v)

def remove(self, *args, **kwargs)

删除指定的元素,如果在集合中没有对应的数据的时候会报错

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

v = s.remove(4)
print(v)
print(s)

def discard(self, *args, **kwargs)

删除指定的元素,但是当删除元素不存在的时候程序不会报错。

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

v = s.discard(3)
print(v)
print(s)

## 删除不存在的元素
s = {1,2,3,4,3,5}
print(s)

v = s.discard("nell")
print(v)
print(s)

集合关系运算交、差、并集

  在数学概念上如果需要求解两个集合的交集可以使用如下的代码来实现,当然这里没有用到上面提到的集合的概念,而是通过两个列表来实现这个功能。在数学和Python中的集合都是无序的。Python的集合的元素是不可重复的,所以可以用来去重。

set_A = [1,2,3,4]
set_B = [2,3]

A_and_B = []
for itemA in set_A:
    if itemA in set_B:
        A_and_B.append(itemA)

print(A_and_B)

  将上面的列表转换成两个集合

set_A = [1,2,3,4,5]
set_B = [2,5]

a_set = set(set_A)
b_set = set(set_B)


print(a_set,b_set)

def intersection(self, *args, **kwargs) 求解两个集合的交集

set_A = [1,2,3,4,5]
set_B = [2,5]

a_set = set(set_A)
b_set = set(set_B)


print(a_set,b_set)

print(a_set.intersection(b_set))
print(b_set.intersection(a_set))
print(a_set&b_set)

def union(self, *args, **kwargs)求两个集合的并集

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)


print(a_set,b_set)

print(a_set.union(b_set))
print(a_set|b_set)

def difference(self, *args, **kwargs) 求差集

  存在于A集合但不存在与B集合中的元素

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)


print(a_set,b_set)


print(a_set.difference(b_set))
print(a_set-b_set)

def symmetric_difference(self, *args, **kwargs)交叉补集

  先求出两个集合的并集,从并集中去除两个集合的交集

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)


print(a_set,b_set)
print(a_set.symmetric_difference(b_set))
print(a_set^b_set)

集合中的扩展操作

def difference_update(self, *args, **kwargs)

求差集并且将结果更新到原来的集合中。也就是说在A集合中进行差集操作则会更新A集合。

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.difference_update(b_set))
print(a_set)
print(b_set)

在这里插入图片描述

def intersection_update(self, *args, **kwargs)求交集并赋值

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.intersection_update(b_set))
print(a_set)
print(b_set)

def isdisjoint(self, *args, **kwargs)

如果两个集合没有交集则返回为TRUE,否则为FALSE

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.isdisjoint(b_set))

def issubset(self, *args, **kwargs)

表示A集合是否是B集合的子集,如果是返回TRUE,否则是FALSE

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.issubset(b_set))

def issuperset(self, *args, **kwargs)

A 集合是否是B集合的父集,如果是返回TRUE,否则是FALSE

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.issuperset(b_set))

def symmetric_difference_update(self, *args, **kwargs)

交叉补集并赋值

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.symmetric_difference_update(b_set))
print(a_set)
print(b_set)

def update(self, *args, **kwargs)

要注意与union与update的区别。并且要注意与add的区别。

set_A = [1,2,3,4,5]
set_B = [2,5,7,8]

a_set = set(set_A)
b_set = set(set_B)

print(a_set,b_set)

print(a_set.update(b_set))
print(a_set)

updete 用来更新多个值。可以将可迭代对象作为参数进行修改操作。

总结

  上面的内容就是集合所有的常用操作,在结束的时候在加入一点小小的东西。在Python中集合是一个可变数据类型,但是有一种集合的定义,就可以将这个集合定义为一个不可变集合。

s = frozenset("hello")
print(s)

  在实际操作中如果想对数据进行一个简单的去重操作,则可以使用集合进行去重。但是如果数据较为复杂的时候需要对数据进行清洗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值