python疑难杂症(8)---Python中集合(Set)数据类型,集合的创建、操作符号、方法、基本函数等

Python的集合是一种无序、可变的数据结构,它是另一种变量类型。集合用于存储唯一的元素。集合中的每个元素都是唯一的,并且没有固定的顺序。

需要注意的是,集合是无序的,没有固定的顺序。因此,集合元素的顺序可能与你创建或添加的顺序不同。

集合具有以下特点:

  • 集合使用大括号 {} 来表示,是内置的 set 类型。
  • 集合中的元素是唯一的,不重复。如果有重复相同的元素,集合将自动去重。

ss1 = {"a","a","b"}  # 元素重复的,

print(ss1)  输出:{"a","b"}

  • 集合是无序的,没有固定的顺序,集合元素的顺序可能与你创建或添加的顺序不同。因此,你无法像列表或元组那样索引来访问集合中的元素。
  • 集合是可迭代的,你可以使用 for 循环遍历集合中的元素。
  • 集合是可变的,你可以添加、删除和修改集合中的元素

1、 集合的创建

直接使用{}创建:在Python中创建set集合也可以像列表、元组和字典一样,直接将集合赋值给变量。

例如:

mset = {1, 2, 3,3,5,5,6,7}  # 使用大括号创建集合

print(mset)  # 输出: {1, 2, 3,5,6,7}

通过set()函数将列表、元组等可迭代对象转换为集合:可以使用set()函数将列表、元组等其它可迭代对象转换为集合。

例如:

mset = set([1, 2, 3,4,5]) # 使用 set() 函数创建集合

print(mset)  # 输出: {1,2, 3,4,5}

2、集合的操作符号:

python符号

说明

|

并集

-

差集

^

对称差集

==

等于

!=

不等于

in

是成员

not  in

不是成员

&

交集

& 交集:& 操作符用于获取两个集合的交集,即包含两个集合共有元素的新集合。

A = {1, 2, 3, 4}

B = {3, 4, 5, 6}

Inset1 = A & B

print(Inset1)  # 输出: {3, 4}

| 并集:| 操作符用于获取两个集合的并集,即包含两个集合所有元素的新集合,并去掉重复值。

A = {1, 2, 3, 4}

B = {3, 4, 5, 6}

Unn1 = A | B

print(Unn1)  

输出:{1,2,3,4,5,6}

- 差集:- 操作符用于获取第一个集合相对于第二个集合的差集,即只在第一个集合中但不在第二个集合中元素的新集合。

A = {1, 2, 3, 4}

B = {3, 4, 5, 6}

diff = A – B

print(diff)  

# 输出: {1, 2}

^ 对称差集:^ 操作符用于获取两个集合的对称差集,即只存在A中的元素或者只在B中的元素的和且此和集不能同时在AB中的元素组成新的集合

A = {1, 2, 3, 4}

B = {3, 4, 5, 6}

sydiff = A ^ B

print(sydiff)  

# 输出: {1, 2, 5, 6}

== 等于:== 操作符用于检查两个集合是否相等,结果是bool变量,如果两个集合具有相同的元素,则 True;否则 False

A = {1, 2, 3,4}

B = {3, 2, 1,4}

res = A == B

print(res)  

# 输出: True

!= 不等于:!= 操作符用于检查两个集合是否不相等,结果是bool变量,如果两个集合具有不同的元素,则 True;否则 False

A = {1, 2, 3}

B = {3, 4, 5}

result = A != B

print(result)  

# 输出: True

in 是成员:in 关键词用于检查一个元素是否属于集合。如果元素在集合中,则 True;否则 False

A = {1, 2, 3, 4}

result = 3 in A

print(result)  

# 输出: True

not in 不是成员:not in 关键词用于检查一个元素是否不属于集合。如果元素不在集合中,则 True;否则 False

A = { 2, 3, 4}

result = 6 not in A

print(result)  

# 输出: True

3、集合的操作方法:

add() 添加元素:向集合添加一个元素

myset = {1, 2, 3}

myset.add(4)

print(myset)

输出:{1,2,3,4}

remove()从集合中移除指定元素,如果元素不存在,会引发 KeyError

myset = {1, 2, 3,4}

myset.remove(2)

print(myset)

输出:{1,3,4}

discard()从集合中移除指定元素,如果元素不存在,不会引发错误。

myset = {1, 2, 3}

myset.discard(4)  # 不会引发错误

print(myset)

输出:{1,2,3}

clear()清空集合中的所有元素。

myset = {1,2,3}

myset.clear()

print(myset)

输出:set()

copy()创建集合的副本。

myset = {1, 2, 3}

mycopy = myset.copy()

print(mycopy)

print(f’myset id:{id(myset)}’ )

print(f’mycopy id:{id(mycopy)}’ )

输出:{1,2,3}

issubset():检查一个集合是否是另一个集合的子集。

set1 = {1, 2, 3}

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

result = set1.issubset(set2)

print(result)

用in试试会不会结果一样:

ret1 = set1 in set2

print(ret1)

issuperset()检查一个集合是否是另一个集合的超集。

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

set2 = {1, 2, 3}

result = set1.issuperset(set2)

print(result)

pop()从集合中随机删除一个元素并返回它。

Set1 = {1, 2, 3, 4, 5,6}

poptt = Set1.pop()

print(poptt)

print(Set1)

输出:

4

{1,2,3,5,6}

update()将一个集合的元素添加到另一个集合中。

set1 = {1, 2, 3}

set2 = {3, 4, 5}

set1.update(set2)

print(set1)

输出:{1,2,3,4,5}

intersection_update()将一个集合更新为另一个集合的交集。

set1 = {1, 2, 3}

set2 = {3, 4, 5}

set1.intersection_update(set2)

print(set1)

输出:{3}

symmetric_difference_update()将一个集合更新为与另一个集合的对称差集。set1 = {1, 2, 3}

set2 = {3, 4, 5}

set1.symmetric_difference_update(set2)

print(set1)

输出:{1,2,4,5}

difference_update()将一个集合更新为相对于另一个集合的差集。

set1 = {1, 2, 3}

set2 = {3, 4, 5}

set1.difference_update(set2)

print(set1)

输出:{1,2}

4、基本函数操作:

max()/min()/sum()

max(iterable) 返回可迭代对象中的最大值。

min(iterable) 返回可迭代对象中的最小值。

sum(iterable) 返回可迭代对象中所有元素的和

numbers = {31415926535}

max_value = max(numbers)

min_value = min(numbers)

total = sum(numbers)

print(max_value)

print(min_value)

print(total)

输出:9  1 30

sorted()返回一个按升序排列的包含可迭代对象中所有元素的新列表。可以使用 reverse=True 参数来进行降序排序。

numbers = {31415926535}

sorted_numbers = sorted(numbers)

sorted_descending = sorted(numbers, reverse=True)

print(sorted_numbers)

print(sorted_descending)

enumerate()用于将可迭代对象中的元素同时返回索引和值,通常在循环中使用

fruits = {"apple", "banana", "cherry"}

for index, fruit in enumerate(fruits):    

        print(f"Index {index}: {fruit}")

欢迎点赞、关注、收藏和交流,你的鼓励是我前进的动力!!!

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值