Python set()函数的简单用法

set(),顾名思义,集合,可以用于创建一个无序不重复元素集,功能类似于Java中的HashSet以及C++中的unordered_set。


从列表创建一个集合
s = [2, 1, 4, 3, 5, 2, 1]
s = set(s)
print(s)

输出:

{1, 2, 3, 4, 5}

可以观察到两点:原列表内元素的顺序被打乱了;重复的元素被去除了。


从字符串创建一个集合
s = "xiongxyowo"
s = set(s)
print(s)

输出:

{'w', 'g', 'x', 'o', 'i', 'n', 'y'}

创建空集合
s = set()
d = {}
print(type(s))
print(type(d))

输出:

<class 'set'>
<class 'dict'>

需要注意的是,直接使用花括号创建的是dict(即其他语言中的map)。


添加元素

使用add方法:

s = set()
s.add(2)
s.add(1)
s.add(4)
s.add(2)
print(s)

输出:

{1, 2, 4}

需要注意的是,这个add方法是没有返回值的,因此无法据此判断set中原本是否存在待插入的元素。


删除元素

使用remove方法。不过一般set这种数据结构在应用场景中大多是"只进不出"的:

s = set()
s.add(2)
s.add(1)
s.add(4)
s.add(2)
s.remove(2)
print(s)

输出:

{1, 4}

如果set中不存在待删除的元素,将会直接报错。


判断元素是否在集合中

使用python自带的in关键字:

s = set()
s.add(2)
s.add(1)
s.add(4)
s.add(2)
print(2 in s)
print(3 in s)

输出:

True
False

集合运算

这也是python的这个set与其他语言中set的最大区别。python支持数学意义上的集合操作,包括交集&,并集|,差集-,补集^

s1 = set([1, 2, 3])
s2 = set([3, 4, 5])
print(s1 & s2)	# 共同元素
print(s1 - s2)	# 在s1不在s2
print(s1 | s2)	# 在s1或在s2
print(s1 ^ s2)	# 仅在s1或仅在s2

输出:

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

例题 [Leetcode 349. 两个数组的交集]
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序 。
示例:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

解答:
使用python自带的集合运算即可一行完成:

def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
    return list(set(nums1) & set(nums2))
  • 12
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值