7.集合set

作者: Stone_説 | 来源:发表于2020-12-14 00:18 被阅读0次

目录
0.集合介绍
1.集合的定义和初始化
2.集合元素增加
3.集合元素删除
4.集合运算

0.集合介绍

非线性的数据结构,元素不可以索引
可变,无序,不重复的元素的集合
集合最大的用处就是去重
集合的元素必须是可hash的,集合元素可以迭代

1.集合的定义和初始化

set() -> new empty set object
set(iterable) -> new set object

>>> s1 = set()
>>> s1
set()
>>> s2 = set(range(5))
>>> s2
{0, 1, 2, 3, 4}
>>> s3 = set([1,2,3,4])
>>> s3
{1, 2, 3, 4}
>>> s4 = {}
>>> s4,type(s4)
({}, <class 'dict'>)
>>> s5 = {(1,2),4,'c'}
>>> s5
{'c', (1, 2), 4}
>>> s6 = {2,[2,3],'d'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

2.集合元素的增加

2.1 add(elem)

增加一个元素到set中
如果元素存在,不做任何操作

>>> s1 = {1,2,3,4,5}
>>> s1.add(0)
>>> s1
{0, 1, 2, 3, 4, 5}
>>> s1.add(2)
>>> s1
{0, 1, 2, 3, 4, 5}
>>> s1.add((21,4,5))
>>> s1
{0, 1, 2, 3, 4, 5, (21, 4, 5)}
>>> s1.add([2,4])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
2.3 update(*others)

合并其他元素到set集合中来
参数others必须是可迭代对象

>>> s1 = {1,2,3,4,5}
>>> s1.update([2,4,5,6])
>>> s1
{1, 2, 3, 4, 5, 6}
>>> s1.update((23,4,5))
>>> s1
{1, 2, 3, 4, 5, 6, 23}
>>> s1.update('abc')
>>> s1
{1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 23}
>>> s1.update(8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

3.集合元素的删除

3.1 remove(elem)

从set中移除一个元素,元素不存在,抛出KeyError异常

>>> s1 = {1,2,3,4,5}
>>> s1.remove(1)
>>> s1.remove(3)
>>> s1
{2, 4, 5}
>>> a = s1.remove(100)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 100
3.2 discard(elen)

从set中移除一个元素,元素不存在,不做任何操作

>>> s1 = {1,2,3,4,5}
>>> s1.discard(2)
>>> s1.discard(1)
>>> s1.discard(100)
>>> s1
{3, 4, 5}
3.3 pop() -> item

移除并返回任意的元素,空集返回KeyError异常

>>> s1 = {1,2,3,4,5}
>>> s1.pop(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop() takes no arguments (1 given)
>>> s1.pop()
1
...
>>> s1.pop()
5
>>> s1.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'
3.4 clear()

移除所有元素

>>> s1 = {1,2,3,4,5}
>>> s1.clear()
>>> s1
set()
3.5 成员运算符

in 和 not in

>>> s1 = {1,2,3,4,5}
>>> 1 in s1
True
>>> 23 in s1
False

4.集合运算

4.1 并集运算

将两个集合A和B的所有元素合并到一起,组成的集合称作集合A和集合B的并集
union(*others) -> 返回和多个集合合并后的新的集合

>>> s1 = {1,2,3}
>>> s2 = {4,5,6}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6}
>>> s3
{8, 9, 7}
>>> s1.union(s2,s3)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

| 运算符重载,等同于union

>>> s1,s2,s3
({1, 2, 3}, {4, 5, 6}, {8, 9, 7})
>>> s1 | s2 | s3
{1, 2, 3, 4, 5, 6, 7, 8, 9}

update(*others) -> 和多个集合合并,就地修改

>>> s1,s2,s3
({1, 2, 3}, {4, 5, 6}, {8, 9, 7})
>>> s1.update(s2,s3)
>>> s1
{1, 2, 3, 4, 5, 6, 7, 8, 9}

|= 等同于update

>>> s1,s2,s3
({1, 2, 3}, {4, 5, 6}, {8, 9, 7})
>>> s1 |= s2
>>> s1
{1, 2, 3, 4, 5, 6}
4.2 交集运算

集合A和集合B,由所有属于A且属于B的元素组成的集合
intersection(*other) -> 返回和多个集合的元素

>>> s1,s2,s4
({1, 2, 3, 4, 5, 6}, {4, 5, 6},{10, 22})
>>> s1.intersection(s2)
{4, 5, 6}
>>> s1.intersection(s4)
set()

& -> 等同intersection

>>> s1,s2,s4
({1, 2, 3, 4, 5, 6}, {4, 5, 6},{10, 22})
>>> s1 & s2
{4, 5, 6}
>>> s1 & s4
set()

intersection_update(*others) -> 获取和多个集合的交集,并就地修改

>>> s1,s2,s4
({1, 2, 3, 4, 5, 6}, {4, 5, 6}, {10, 4, 22, 6})
>>> s1.intersection_update(s2,s4)
>>> s1
{4, 6}

&= -> 等同intersection_update

>>> s2,s4
({4, 5, 6}, {10, 4, 22, 6})
>>> s2 &= s4
>>> s2
{4, 6}
4.3 差集运算

集合A和B,由所有属于A且不属于B的元素组成的集合
difference(*others) -> 返回和多个集合的差集

>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s1.difference(s2)
{1, 4}
>>> s3 = {1,2,3,4,5}
>>> s1.difference(s3)
set()

- 等同于difference

>>> s1,s2,s3
({1, 2, 3, 4}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1 - s2
{1, 4}
>>> s1 - s3
set()

difference_update(*others) -> 获取和多个集合的差集并就地修改

>>> s1,s2,s3
({1, 2, 3, 4}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1.difference_update(s2)
>>> s1,s2
({1, 4}, {2, 3})
>>> s1,s2,s3
({1, 2, 3, 4}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1.difference_update(s2,s3)
>>> s1
set()

-= 等同于difference_update

>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s1 -= s2
>>> s1
{1, 4}
4.4 对称差集

集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B) U (B-A)
symmetric_difference(other) -> 返回和另一个集合的差集

>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s3 = {1,2,3,4,5}
>>> s1.symmetric_difference(s2)
{1, 4}
>>> s1.symmetric_difference(s3)
{5}

^ 等同symmetric_difference

>>> s1,s2,s3
({1, 2, 3, 4}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1 ^ s2
{1, 4}
>>> s1 ^ s3
{5}

symmetric_difference_update(other) -> 获取和另一个集合的差集并就地修改

>>> s1,s2,s3
({1, 2, 3, 4}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 4}
>>> s1.symmetric_difference_update(s3)
>>> s1
{2, 3, 5}

^= 等同于symmetric_difference_update

>>> s1,s2,s3
({2, 3, 5}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1 ^= s2
>>> s1
{5}
4.5 其他

issubset(other),<= -> 判断当前集合是不是另一个集合的子集

>>> s1,s2,s3
({5}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1.issubset(s2)
False
>>> s1.issubset(s3)
True

set1 < set2 -> 判断set1是否是set2的真子集

>>> s1,s2,s3
({5}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1 < s2
False
>>> s2 < s3
True

issuperset(other),>= -> 判断当前集合是否是other的超集

>>> s1,s2,s3
({5}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1.issuperset(s2)
False
>>> s3.issuperset(s2)
True

set1 > set2 判断set1是否是set2的真超集

>>> s1,s2,s3
({5}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1 > s2
False
>>> s3 > s2
True

isdisjoint(other) -> 当前集合和另一个集合有没有交集,没有交集返回True

>>> s1,s2,s3
({5}, {2, 3}, {1, 2, 3, 4, 5})
>>> s1.isdisjoint(s2)
True
>>> s1.isdisjoint(s3)
False

相关文章

  • 7.集合set

    目录0.集合介绍1.集合的定义和初始化2.集合元素增加3.集合元素删除4.集合运算 0.集合介绍 非线性的数据结构...

  • 7. Set集合与Map集合

    JS 在以前只有一种集合类型,也就是数组类型。ES6 向 JS 添加了 Set 与 Map集合类型。 7.1 ES...

  • Kotlin数据容器(3)✔️集合

    集合概述Set 集合不可变 Set 集合 [setOf]可变 Set 集合 [mutableSetOf、hashS...

  • Python set集合

    本文目录 set集合的基本用法 set集合的创建 Set集合的交集&并集&差集 set的集合推导式 set集合的常...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • Java—Set集合详解(HashSet/LinkedHashS

    Set集合介绍 Set集合的概念   Set集合类似于一个容器,程序把很多对象保存到Set集合中,Set集合对添加...

  • Java集合总结:Set集合

    Set集合(HashSet是典型实现) set集合特点:1.无序性:set集合是无序的2.不可重复:set集合是不...

  • python基础-dict&set

    1.字典 dict 2.访问dict 3.dict特点 4.dict更新 5.dict遍历 6.set集合 7.访...

  • Python 基础 set集合

    title: set 集合 set 集合 set : 与dict相比,set是一组存储key的集合,但不存储val...

  • Python基础学习笔记(五)集合与字典

    本节知识大纲: 一、Set集合的概念 1. set集合的性质 set集合是一组无序的且不能重复的集合,打印set集...

网友评论

    本文标题:7.集合set

    本文链接:https://www.haomeiwen.com/subject/ojppgktx.html