python中set的用法

2023-12-14 20:44:35网络知识悟空

Python中的set是一种无序且不重复的数据类型,可以用来存储多个元素,常用于去重或者判断某个元素是否存在。set可以使用大括号{}或者set()函数来创建,元素之间用逗号隔开。

例如,创建一个包含1、2、3的set:

`python

my_set = {1, 2, 3}


或者使用set()函数:
`python
my_set = set([1, 2, 3])

set的主要特点是元素不重复,如果重复添加相同的元素,set只会保留一个。例如:

`python

my_set = {1, 2, 3, 3, 2, 1}

print(my_set)# 输出{1, 2, 3}


set还支持一些常用的集合操作,例如并集、交集、差集等。下面是一些常用的set操作:
## 1. 并集
并集是指两个集合中所有元素的集合。可以使用union()方法或者|运算符来实现。例如:
`python
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用union()方法
set3 = set1.union(set2)
print(set3)  # 输出{1, 2, 3, 4, 5}
# 使用|运算符
set4 = set1 | set2
print(set4)  # 输出{1, 2, 3, 4, 5}

## 2. 交集

交集是指两个集合同的元素的集合。可以使用intersection()方法或者&运算符来实现。例如:

`python

set1 = {1, 2, 3}

set2 = {3, 4, 5}

# 使用intersection()方法

set3 = set1.intersection(set2)

print(set3)# 输出{3}

# 使用&运算符

set4 = set1 & set2

print(set4)# 输出{3}


## 3. 差集
差集是指一个集合中不包含另一个集合中的元素的集合。可以使用difference()方法或者-运算符来实现。例如:
`python
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用difference()方法
set3 = set1.difference(set2)
print(set3)  # 输出{1, 2}
# 使用-运算符
set4 = set1 - set2
print(set4)  # 输出{1, 2}

## 4. 对称差集

对称差集是指两个集合中不相同的元素的集合。可以使用symmetric_difference()方法或者^运算符来实现。例如:

`python

set1 = {1, 2, 3}

set2 = {3, 4, 5}

# 使用symmetric_difference()方法

set3 = set1.symmetric_difference(set2)

print(set3)# 输出{1, 2, 4, 5}

# 使用^运算符

set4 = set1 ^ set2

print(set4)# 输出{1, 2, 4, 5}


## 5. 判断元素是否存在
可以使用in关键字来判断一个元素是否存在于set中。例如:
`python
my_set = {1, 2, 3}
if 1 in my_set:
    print("元素1存在于set中")
else:
    print("元素1不存在于set中")

## 6. 添加元素

可以使用add()方法来向set中添加一个元素,如果添加的元素已经存在于set中,不会有任何变化。例如:

`python

my_set = {1, 2, 3}

my_set.add(4)

print(my_set)# 输出{1, 2, 3, 4}


## 7. 删除元素
可以使用remove()方法来删除set中的一个元素,如果元素不存在于set中,会抛出KeyError异常。可以使用discard()方法来删除set中的一个元素,如果元素不存在于set中,不会有任何变化。例如:
`python
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set)  # 输出{1, 3}
my_set.discard(4)
print(my_set)  # 输出{1, 3}

## 8. 清空set

可以使用clear()方法来清空set中的所有元素。例如:

`python

my_set = {1, 2, 3}

my_set.clear()

print(my_set)# 输出set()

扩展问答:

1. set中的元素可以是任何类型吗?

答:set中的元素必须是可哈希的(immutable),因此可以是数字、字符串、元组等不可变类型。不可哈希的类型,例如列表、字典等可变类型,不能作为set的元素。

2. set中的元素是按照什么顺序存储的?

答:set是一种无序的数据类型,因此set中的元素没有固定的顺序。如果需要按照一定的顺序遍历set中的元素,可以使用sorted()函数或者for循环来实现。

3. set和list有什么区别?

答:set和list都可以用来存储多个元素,但是set中的元素不重复,而list中的元素可以重复。set支持集合操作(如并集、交集、差集等),而list不支持这些操作。set的查询速度比list快,但是set需要更多的内存空间来存储元素。

发表评论: