前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据类型(集合-Set)_006

Python数据类型(集合-Set)_006

原创
作者头像
留给昨天、
发布2024-10-30 16:58:04
840
发布2024-10-30 16:58:04
举报
文章被收录于专栏:python

集合-Set

保存不重复的元素,即集合中的元素都是唯一的,互不相同

同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,

无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误

Python 中的 set 集合是无序的,所以每次输出时元素的排序顺序可能都不相同

代码语言:python
代码运行次数:0
复制
set1 = {1, 'a', (2, 'b'), 3.14, 1}
print(set1)

set2 = {[1, 2], 'a'}
print(set2)

运行结果:

{(2, 'b'), 1, 'a', 3.14}

Traceback (most recent call last):

File "E:\PycharmProjects\pythonProject\test_basic.py", line 247, in <module>

set2 = {[1, 2], 'a'}

^^^^^^^^^^^^^

TypeError: unhashable type: 'list'

一、创建集合

1、使用 {} 创建

  • 直接将集合赋值给变量
  • 语法
代码语言:txt
复制
setname = {ele1,ele2,...,elen}

参数说明:
setname 表示集合的名称
elen 集合各元素的值
  • 举例
代码语言:python
代码运行次数:0
复制
set3 = {1, 2, 3, 'a', 'b', 'c'}
print(set3)

运行结果:

{1, 2, 3, 'c', 'a', 'b'}

2、 set()函数创建集合

  • Python 的内置函数,即将字符串、列表、元组、range 对象等可迭代对象转换成集合
  • 语法
代码语言:txt
复制
setname = set(iteration)

参数说明:
iteration 就表示字符串、列表、元组、range 对象等数据
  • 举例
代码语言:python
代码运行次数:0
复制
str1 = 'hello python'
set4 = set(str1)
print(set4)
print(type(set4))
list1 = [1, 2, 3]
set5 = set(list1)
print(set5)
print(type(set5))
tuple1 = (1, 2, 3)
set6 = set(tuple1)
print(set6)
print(type(set6))

运行结果:

{'e', 'o', 'p', 'n', ' ', 't', 'h', 'y', 'l'}

<class 'set'>

{1, 2, 3}

<class 'set'>

{1, 2, 3}

<class 'set'>

二、删除集合

1、del()语句

  • 举例
代码语言:python
代码运行次数:0
复制
set7 = {1, 2, 3, 'a', 'b', 'c'}
del(set7)
print(set7)

运行结果::

Traceback (most recent call last):

File "E:\PycharmProjects\pythonProject\test_basic.py", line 270, in <module>

print(set7)

^^^^

NameError: name 'set7' is not defined. Did you mean: 'set'?

三、增加元素

1、add()方法

  • 语法
代码语言:txt
复制
setname.add(element)

参数说明:
setname 表示要添加元素的集合
element 表示要添加的元素内容
注:
使用 add() 方法添加的元素:
只能是数字、字符串、元组或者布尔类型(True 和 False)值,
不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误
  • 举例
代码语言:python
代码运行次数:0
复制
set8 = {1, 2, 3, 'a', 'b', 'c'}
set8.add((4, 5))
print(set8)
set8.add([6, 7])
print(set8)

运行结果:

{1, 2, 3, (4, 5), 'c', 'b', 'a'}

Traceback (most recent call last):

File "E:\PycharmProjects\pythonProject\test_basic.py", line 275, in <module>

set8.add([6, 7])

TypeError: unhashable type: 'list'

四、删除元素

1、remove() 方法

  • 语法
代码语言:txt
复制
setname.remove(element)

注:
如果被删除元素本就不包含在集合中,会抛出 KeyError 错误
  • 举例
代码语言:python
代码运行次数:0
复制
set9 = {1, 2, 3, 'a', 'b', 'c'}
set9.remove(1)
print(set9)
set9.remove(9)
print(set9)

运行结果:

{2, 3, 'b', 'c', 'a'}

Traceback (most recent call last):

File "E:\PycharmProjects\pythonProject\test_basic.py", line 282, in <module>

set9.remove(9)

KeyError: 9

2、discard() 方法

  • 和 remove() 方法的用法完全相同
  • 唯一的区别就是,当删除集合中元素失败时,不会抛出任何错误
  • 举例
代码语言:python
代码运行次数:0
复制
set10 = {1, 2, 3, 'a', 'b', 'c'}
set10.remove(1)
print(set10)
set10.discard(9)
print(set10)

运行结果:

{2, 3, 'b', 'c', 'a'}

{2, 3, 'b', 'c', 'a'}

五、查找元素

1、通过for循环

  • 集合中的元素是无序的,因此无法向列表那样使用下标访问元素
  • 举例
代码语言:python
代码运行次数:0
复制
set11 = {1, 2, 3, 'a', 'b', 'c'}
for a in set11:
    print(a, end=' ')

运行结果:

1 2 b 3 a c

六、交集、并集、差集运算

集合最常做的操作就是进行交集、并集、差集以及对称差集运算

集合示意图

如图,有 2 个集合,分别为 set1={1,2,3} 和 set2={3,4,5},它们既有相同的元素,也有不同的元素。以这两个集合为例,分别做不同运算的结果如表 1 所示。

运算操作

Python运算符

含义

例子

交集

&

取两集合公共的元素

set1 & set2 {3}

并集

|

取两集合全部的元素

set1 | set2 {1,2,3,4,5}

差集

-

取一个集合中另一集合没有的元素

set1 - set2 {1,2} set2 - set1 {4,5}

对称差集

^

取集合 A 和 B 中不属于 A&B 的元素

set1 ^ set2 {1,2,4,5}

七、常用方法

方法名

语法格式

功能

实例

add()

set1.add()

向 set1 集合中添加数字、字符串、元组或者布尔类型

>>> set1 = {1,2,3}>>> set1.add((1,2))>>> set1{(1, 2), 1, 2, 3}

clear()

set1.clear()

清空 set1 集合中所有元素

>>> set1 = {1,2,3}>>> set1.clear()>>> set1set()set()才表示空集合,{}表示的是空字典

copy()

set2 = set1.copy()

拷贝 set1 集合给 set2

>>> set1 = {1,2,3}>>> set2 = set1.copy()>>> set1.add(4)>>> set1{1, 2, 3, 4}>>> set1{1, 2, 3}

difference()

set3 = set1.difference(set2)

将 set1 中有而 set2 没有的元素给 set3

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set3 = set1.difference(set2)>>> set3{1, 2}

difference_update()

set1.difference_update(set2)

从 set1 中删除与 set2 相同的元素

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set1.difference_update(set2)>>> set1{1, 2}

discard()

set1.discard(elem)

删除 set1 中的 elem 元素

>>> set1 = {1,2,3}>>> set1.discard(2)>>> set1{1, 3}>>> set1.discard(4){1, 3}

intersection()

set3 = set1.intersection(set2)

取 set1 和 set2 的交集给 set3

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set3 = set1.intersection(set2)>>> set3{3}

intersection_update()

set1.intersection_update(set2)

取 set1和 set2 的交集,并更新给 set1

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set1.intersection_update(set2)>>> set1{3}

isdisjoint()

set1.isdisjoint(set2)

判断 set1 和 set2 是否没有交集,有交集返回 False;没有交集返回 True

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set1.isdisjoint(set2)False

issubset()

set1.issubset(set2)

判断 set1 是否是 set2 的子集

>>> set1 = {1,2,3}>>> set2 = {1,2}>>> set1.issubset(set2)False

issuperset()

set1.issuperset(set2)

判断 set2 是否是 set1 的子集

>>> set1 = {1,2,3}>>> set2 = {1,2}>>> set1.issuperset(set2)True

pop()

a = set1.pop()

取 set1 中一个元素,并赋值给 a

>>> set1 = {1,2,3}>>> a = set1.pop()>>> set1{2,3}>>> a1

remove()

set1.remove(elem)

移除 set1 中的 elem 元素

>>> set1 = {1,2,3}>>> set1.remove(2)>>> set1{1, 3}>>> set1.remove(4)Traceback (most recent call last):  File "<pyshell#90>", line 1, in <module>    set1.remove(4)KeyError: 4

symmetric_difference()

set3 = set1.symmetric_difference(set2)

取 set1 和 set2 中互不相同的元素,给 set3

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set3 = set1.symmetric_difference(set2)>>> set3{1, 2, 4}

symmetric_difference_update()

set1.symmetric_difference_update(set2)

取 set1 和 set2 中互不相同的元素,并更新给 set1

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set1.symmetric_difference_update(set2)>>> set1{1, 2, 4}

union()

set3 = set1.union(set2)

取 set1 和 set2 的并集,赋给 set3

>>> set1 = {1,2,3}>>> set2 = {3,4}>>> set3=set1.union(set2)>>> set3{1, 2, 3, 4}

update()

set1.update(elem)

添加列表或集合中的元素到 set1

>>> set1 = {1,2,3}>>> set1.update([3,4])>>> set1{1,2,3,4}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合-Set
  • 一、创建集合
    • 1、使用 {} 创建
      • 2、 set()函数创建集合
      • 二、删除集合
        • 1、del()语句
        • 三、增加元素
          • 1、add()方法
          • 四、删除元素
            • 1、remove() 方法
              • 2、discard() 方法
              • 五、查找元素
                • 1、通过for循环
                • 六、交集、并集、差集运算
                • 七、常用方法
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档