首页 > 开发 > Python > 正文

Python中的集合操作与集合运算

2023-04-26 12:04:37
字体:
来源:转载
供稿:网友

Python中的集合是一种无序的,无重复值的数据结构类型。Python中的集合可以用来检测元素检测或消除重复的元素。

一、python 集合概述

(1)Python中的集合元素是无序的,即元素没有顺序问题,也不能像数组、列表、字符串那样使用索引来访问某个元素;

(2)各元素的顺序也并不是定义时的顺序;

(3)Python中集合的每个元素都是不同的,即使你定义了相同的元素,其在使用时也会自动消除,利用集合这一特点可以去除重复值;

(4)Python中的集合使用{}或set()来定义;

(5)如果定义一个空集只能使用set()来定义,不能使用{}定义,原因是{}用于定义词典的空值;

(6)集合是值可变类型,所以可以对其元素值进行增,删操作;

二、定义集合

Python中可以使用一对英文半角的花括号来定义一个集合,各元素的值使用英文半角的逗号进行分隔;也可以使用其内置函数set()来定义一个集合。下面是定义集合的几个例子:

>>> set1 = {1, 2, 5, 3}  
>>> print(set1# 注意输出顺序
{1, 2, 3, 5}
>>> set2 = {1, 3, 'A', 'Python'# 集合元素可以是不同类型
>>> print(set2)
{1, 2, 'Python', 'A'}
>>> set3 = {1, 4, 1, 5}  # 有重复值现象
>>> print(set3# 注意输出情况
{1, 4, 5}
>>> set4 = set()  # 定义一个空集
>>> print(set4)
set()
>>> set5 = set(['python', 'R', 'Java'])
>>> print(set5)
{'R', 'python', 'Java'}
>>> set6 = set("ABE")
>>> print(set6)
{'E', 'B', 'A'}
>>> 

三、集合元素的访问

由于集合是无序且无索引的,不能像列表、数组等那样使用索引来访问它的元素,但是我们可以使用 for 循环来迭代访问其元素或通过 in 运算符判断集合中是否存在某个元素。

colors = {'Red', 'Yellow', 'White', 'Blue', 'Green'}
for cl in colors:
    print(cl, end = ' ')

print('/n')
print('Pink' in colors)
print('Blue' in colors)
print('White' in colors)

输出结果:

White Green Yellow Blue Red

False
True
True

四、修改集合

1、新增元素

我们可以使用add()函数为集合添加一个元素,也可以使用update()函数向集合中添加多个元素。

fruits = {"apple", "pear", "cherry"}
print("原集合:", fruits)
fruits.add("lemon"# add 方法每次只能添加一个元素
print("增加1个后:", fruits)
fruits.update(["lichee", "blueberry", "banana"])  # 此处可以是列表或一个集合形式
print("增加多个后:", fruits)

输出结果:

原集合: {'cherry', 'pear', 'apple'}
增加1个后: {'lemon', 'cherry', 'pear', 'apple'}
增加多个后: {'cherry', 'banana', 'pear', 'apple', 'blueberry', 'lemon', 'lichee'}
2、从集合中移除元素

我们可以使用 remove()函数、discard()函数、clear()函数、pop()函数来删除集合中的元素,也可以使用del命令删除集合的定义。

fruits = {"apple", "cherry", "lemon", "pear", "lichee"}
print(fruits)
fruits.remove("pear"# 使用remove从集合中移除特定元素
print(fruits) # {'lemon', 'apple', 'lichee', 'cherry'}
fruits.discard("apple"# 使用discard从集合中删除特定元素
print(fruits) # {'lemon', 'lichee', 'cherry'}
fruits.pop()  # 从集合中移除最顶端的元素
print(fruits) # {'lichee', 'cherry'}
fruits.clear() # 清空集合中的所有元素
print(fruits)
del fruits  # 删除fruits的定义
print(fruits# 将会引发NameError错误 

输出结果:

{'lemon', 'apple', 'lichee', 'cherry', 'pear'}
{'lemon', 'apple', 'lichee', 'cherry'}
{'lemon', 'lichee', 'cherry'}
{'lichee', 'cherry'}
set()
Traceback (most recent call last):
    File "D:/python/PyTrain/testcode/sets.py", line 29, in <module>
        print(fruits)
NameError: name 'fruits' is not defined

Python没有提供直接修改特定值的操作,这也是由于集合无序且无索引造成的,但是我们可以使用其他方法来达到这样的目的,比如先删除后增加等,本站将在以后专门写文章来说明具体的操作技巧。

五、集合运算符

Python提供了简单方便的运算符可以实现集合的并、交、差和对称差的运算。

1、集合的并运算

使用 | 运算符可以实现两个集合的并运算。集合A和集合B并运算的结果中的元素是由或者属于集合A或者属于集合B的元素构成的,简单说把集合A中的元素和集合B中的元素放在一起,然后去除重复的就是并运算的结果。

A = {1, 3, 7}
B = {4, 6, 7, 8}
R = A | B
print("A | B=", R)

输出结果:

A | B= {1, 3, 4, 6, 7, 8}2、集合的交运算

集合A与集合B的交运算的结果是由既属于集合A又属于集合B的元素构成的。就是两个集合的公共元素。在Python中使用 & 运算符可以求两个集合的并运算。

A = {1, 3, 7}
B = {4, 6, 7, 8}
R = A & B
print("A & B=", R)

输出结果:

A & B= {7}

3、集合的差运算

集合A与集合B的差运算结果是由属于集合A而不属于集合B的元素构成的。就是A中有而B中没有的元素。在Python中可以使用 - 来进行集合的差运算。

A = {1, 3, 7}
B = {4, 6, 7, 8}
R = A - B
print("A - B=", R)

运算结果:

A - B= {1, 3}4、集合的对称差运算

集合A与集合B的对称差运算结果是由属于集合A或属于集合B但不能是共同拥有的元素构成的。即A和B的并集去除交集后的结果。在Python中使用 ^ 运算符可以求两个集合的对称差集。

A = {1, 3, 7}
B = {4, 6, 7, 8}
R = A ^ B
print("A ^ B=", R)

输出结果:

A ^ B= {1, 3, 4, 6, 8}Python也提供了相关的函数可以实现以上各种运算,关于集合的相关函数的使用方法,本站将在以后陆续进行介绍。

关于集合的内容暂时就介绍这么多,如果内容有误,请留言评论。

Python中的集合与集合运算

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表