python中的集合操作

2020年7月1日 / 7次阅读 / Last Modified 2020年7月1日

python中的集合操作,通过set对象来实现。Python中的集合跟数学上的集合是一致的,不允许有重复元素,而且可以进行交集、并集、差集等运算。

创建集合set对象

>>> seta = {1,2,3,4,5,6}
>>> len(seta)
6
>>> setb = set(range(10))
>>> setb
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> setc = set([1,2,3,4,5,6])
>>> setc
{1, 2, 3, 4, 5, 6}
>>> setd = {x for x in range(10) if x%2 == 0}
>>> setd
{0, 2, 4, 6, 8}

set对象内不能有重复的元素,这是集合的一个特征,很多时候,我们可以用这个特征来实现去重功能。

>>> lista = [1,1,2,2,3,3,4,5,5,6,6,7,7,8]
>>> lista
[1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8]
>>> lista = list(set(lista))
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8]

add和update

向集合中增加一个元素,用add,想集合中增加一个子集,用update。无论怎么添加元素,集合都会保证不会有重复元素出现。

>>> seta
{1, 2, 3, 4, 5, 6}
>>> seta.add(7)
>>> seta
{1, 2, 3, 4, 5, 6, 7}
>>> seta.update([8,9])
>>> seta
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> seta.update([1,2,3,4,5])
>>> seta
{1, 2, 3, 4, 5, 6, 7, 8, 9}

discard和remove

discard和remove的区别是,如果要删除的元素不存在,diacard什么都不做,而remove会raise KeyError。

>>> seta
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> seta.discard(10)
>>> seta
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> seta.remove(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 10

集合的pop函数

>>> help(set.pop)
Help on method_descriptor:

pop(...)
    Remove and return an arbitrary set element.
    Raises KeyError if the set is empty.

>>> seta
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> seta.pop()
1
>>> seta
{2, 3, 4, 5, 6, 7, 8, 9}

pop函数的作用,似乎就是弹出一个元素(在集合中删除)来干活儿。弹出哪一个,代码不能控制。

集合的成员、交集、并集、差集等运算

# 集合的交集、并集、差集、对称差运算
print(set1 & set2)
# print(set1.intersection(set2))
print(set1 | set2)
# print(set1.union(set2))
print(set1 - set2)
# print(set1.difference(set2))
print(set1 ^ set2)
# print(set1.symmetric_difference(set2))
# 判断子集和超集
print(set2 <= set1)
# print(set2.issubset(set1))
print(set3 <= set1)
# print(set3.issubset(set1))
print(set1 >= set2)
# print(set1.issuperset(set2))
print(set1 >= set3)
# print(set1.issuperset(set3))

写代码要像写数学公式那样,python天生就是这样,所以很多搞大数据的人喜欢python。python内置set和复数这两种数学对象。Guido是数学和计算机双硕士。

-- EOF --

本文链接:https://www.pynote.net/archives/2111

相关文章

    留言区

    电子邮件地址不会被公开。 必填项已用*标注


    前一篇:
    后一篇:

    More


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top