python set集合的特点_Python set集合精讲

和列表类似,Python 集合也是一个数据集合,其也不要求元素的类型一致,但是集合有下面两个特点:

集合内元素唯一。如不可以用 1、2、1、1 组成集合,因为其包含重复的 1。

集合是无序的,添加元素时不能指定位置,删除元素时也不能通过指定位置,只能通过指定值。当然也不能通过位置来定位某个元素。

Python 创建集合

我们可以从列表创建集合,将列表中的元素都加入到集合中,如果有重复的元素就仅保留一个。

>>> a = set([1, 1, 3])

>>> a

set([1, 3]) # 重复的元素被丢弃

>>> type(a) # 查看类型

下面的例子说明了集合的无序性:

>>> a = set([100, 99, 1, 1, 3]) # 从列表中构建一个集合

>>> type(a) # 得到a的类型

# 类型是字典型

>>> a # 查看a的内容

set([3, 1, 99, 100]) # 可以发现其顺序和添加的顺序是无关的

也可以从元组、字典和其他集合构建集合。

下面的例子是用元组构建集合:

>>> a = set((0, 1, 2, 3, 3, 2)) # 从元组构建集合

>>> a # 重复元素被丢弃

{0, 1, 2, 3}

>>> type(a) # 查看类型

下面的例子是从字典构建集合,使用的是字典的键来构建集合,字典的值没有被使用到:

>>> a = set({1:10, 2:20, 3:30})

>>> a

{1, 2, 3}

>>> type(a)

下面的例子是从字符串构建集合,其每个字符都成为集合的一个元素:

>>> a = set("abcdefabc") # 以字符串为输入创建一个集合

>>> a # 查看a的内容

{'c', 'e', 'f', 'b', 'd', 'a'}

>>> type(a) # 查看a的类型

下面的例子是从另外一个集合构建集合:

>>> a = set([1, 2, 3]) # 3个元素的集合

>>> b = set(a) # 用集合a作为输入,创建一个新的集合b

>>> b # 查看b的值

{1, 2, 3}

>>> type(b) # 查看b的类型

当然也可以构造一个空的集合,使用的方法是 set()。空集合没有任何元素。

>>> a = set() # 创建一个空的集合

>>> type(a) # 查看类型

>>> len(a) # 得到元素个数

0

Python 集合的基本操作

1) 添加元——add(值)

该函数只能添加一个元素。

>>> a = set() # 构造一个空的集合

>>> a.add(1) # 添加一个元素1

>>> a # 查看a的值

set([1]) # 的确包含唯一一个元素1

>>> a.add(100) # 再次添加元素100

>>> a # 查看现在a的值

set([1, 100]) # 包含两个元素了

如果添加的元素已经在集合中存在,那么不会发生任何变化。

>>> a # a是包含1和100的集合

set([1, 100]) # a的内容

>>> a.add(100) # 添加重复的元素100

>>> a # a没有发生任何变化

set([1, 100])

2) 扔掉元素——discard(值)

该函数删除集合中指定的值对应的元素。

>>> a = set([1, 2, 3])

>>> a

set([1, 2, 3])

>>> a.discard(1)

>>> a

set([2, 3])

如果指定值在集合中不存在,则不做任何操作。

>>> a

set([2, 3])

>>> a.discard(100)

>>> a

set([2, 3])

3) 删除指定值——remove(值)

该函数和 discard() 的不同之处在于,如果指定的值在集合中不存在,会抛出异常。

>>> a = set([1, 2, 3])

>>> a.remove(1)

>>> a

set([2, 3])

>>> a.remove(10) # 删除不存在的元素10,抛出KeyError异常

Traceback (most recent call last):

File "", line 1, in

KeyError: 10

4) 清空所有元素——clear()

该函数扔掉所有的元素。执行完该函数后,该集合将变成一个空的集合。

>>> a = set([1, 2, 3])

>>> a

set([1, 2, 3])

>>> a.clear()

>>> a

set([])

>>> a.clear()

>>> a

set([])

5) 删除第一个元素——pop()

如果集合中有元素,则返回值为删除掉的元素的值。

>>> a = set([1, 2, 3])

>>> a.pop()

1

>>> a

set([2, 3])

如果集合为空,则抛出异常。

>>> a = set([])

>>> len(a)

0

>>> a

set([])

>>> a.pop()

Traceback (most recent call last):

File "", line 1, in

KeyError: 'pop from an empty set'

6) 是否存在交集——isdisjoint()

该函数判断是否存在这样的元素,其同时属于集合 a 和集合 b。如果存在这样的元素,返回 False;否则返回 True。

>>> a = set([1, 2, 3, 4])

>>> b = set([1, 2, 10, 20])

>>> a.isdisjoint(b)

False

>>> c = set([100, 200])

>>> a.isdisjoint(c)

True

7) 是指定集合的子集吗——issubset()

a 是 b 的子集就是说集合 a 的所有元素都属于集合 b。

>>> a = set([1, 2])

>>> b = set([1, 2, 10, 20])

>>> a.issubset(b) # 集合a是集合b的子集吗

True # 是的

>>> c = set([1, 10, 20, 30, 40])

>>> a.issubset(c)

False

如果 a 等于 b,那么 a 和 b 互为子集。

>>> a = set([1, 2]) # 集合a和集合b值相同,但是是不同的对象

>>> id(a) # 集合a的id

49020712

>>> b = set([2, 1])

>>> id(b) # 集合b的id,不同于a的id

49018024

>>> a is b # 集合a和b不是一个对象

False

>>> a == b # 集合a和b的内容相等

True

>>> a.issubset(b) # a是b的子集

True

>>> b.issubset(a) # b也是a的子集

True

8) 是指定集合的超集吗——issuperset()

a 是 b 的超集合就是说集合 b 中的所有元素都属于集合 a。

>>> a = set([1, 2])

>>> b = set([1, 2, 10, 20])

>>> b.issuperset(a)

True

>>> b.issuperset(b)

True

>>> a.issuperset(b)

False

如果 a 是 b 的超集,那么 b 就是 a 的子集。

>>> a = set([1, 2, 3, 4]) # a包含所有b的元素

>>> b = set([1, 3])

>>> a.issuperset(b) # a是b的超集

True

>>> b.issubset(a) # b是a的子集

True

如果 a 等于 b,那么它们互为子集,同时也互为超集。

>>> a = set([1, 2]) # 集合a和b值相同,但是不是一个对象

>>> b = set([2, 1])

>>> a == b # 值相同

True

>>> a is b # 不是一个对象

False

>>> a.issuperset(b) # 它们互为超集

True

>>> b.issuperset(a)

True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值