第八章 集合

目录

一、集合

1.1 定义

1.2 集合操作

1.2.1 创建空集合

1.2.2 添加集合元素add():将要添加的元素作为一个整体添加

1.2.3 添加集合元素update():将要添加的元素拆分成单个添加

1.2.4 删除集合元素remove()

1.2.5 修改集合元素:转成list修改后再转成set

1.2.6 遍历集合

1.2.7 discard():查找元素并删除

1.2.8 pop():删除并返回集合中的第一个元素

1.2.9 clear():清空集合中的所有元素

1.2.10 copy():集合拷贝

1.2.11 len():返回集合中有多少个元素

1.2.12 交集&:返回两个集合中共同的元素组成的集合

1.2.13 并集|:返回的是两个集合去掉重复的元素组成的集合

1.2.14 差集-:返回的是在集合1但不在集合2中的元素组成的集合

1.2.15 ^:两个集合中除去相同集合的元素组成的集合

1.2.16 运算符判断集合之间的关系

​​​​​​​1.2.17 ssuperset()/issubset():超集和子集

1.2.18 不可变集合frozenset,不能添加和删除元素

二、课堂练习

2.1、写函数实现,给定一个数,一个列表中是否存在2个数之和为这个数,在返回2个数的坐标,不存在返回None

2.2、利用递归,处理嵌套列表,生成列表l=[1,2,[3,4,[5,6,7,[8,9,[10,11]]]]]

2.3、统计列表中所有类型的数据个数;列表自己构造

2.4、翻转字符串"gloryroad";可尝试多种方法

2.5、两句话:1.求两句话中出现的重复单词 2.求两句话中出现的不重复单词


一、集合

1.1 定义

set是python中的一种基本数据类型,特点是其中的元素都是不重复的,而且是无序的。集合分为两种:可变集合set和不可变集合frozenset

可变集合set:创建非空的集合时,参数必是迭代器类型(包括字符串、列表、元组、字典),然后转换成无序不重复的集合,所以可以用来去重。

不可变集合frozenset:是不能被改变的,也就是不能插入和删除,类似与元组

>>> s=set("abcabc")
>>> s
{'a', 'b', 'c'}
>>> s2={1,2,3,4}
>>> type(s2)
<class 'set'>
>>> s2
{1, 2, 3, 4}

>>> set("abcddk")
{'k', 'b', 'd', 'a', 'c'}
>>> set([1,2,33])
{1, 2, 33}
>>> set((1,2,34,2))
{1, 2, 34}
>>> set({"a":1,"b":2})
{'a', 'b'}
>>> set({"a":1,"b":2}.values())
{1, 2}
>>>
>>> set([])
set()
>>> len(set("123"))
3
>>> s=frozenset("abcdaac")
>>> print(s)
frozenset({'a', 'b', 'c', 'd'})
>>> s2=set("abdabdxc")
>>> print(s2)
{'b', 'd', 'a', 'x', 'c'}

1.2 集合操作

1.2.1 创建空集合

>>> a=set([])
>>> a
set()
>>> type(a)
<class 'set'>
>>> set(())
set()
>>> set({})
set()
>>> set("")
set()
>>> s=set()
>>> s
set()
>>> type(s)
<class 'set'>

1.2.2 添加集合元素add():将要添加的元素作为一个整体添加

>>> s=set("abc")
>>> s
{'a', 'b', 'c'}
>>> s.add("df")
>>> s
{'a', 'b', 'c', 'df'}
>>> s.add("a")
>>> s
{'a', 'b', 'c', 'df'}

1.2.3 添加集合元素update():将要添加的元素拆分成单个添加

>>> s.update("akjf")
>>> s
{'k', 'b', 'j', 'f', 'df', 'a', 'c'}

1.2.4 删除集合元素remove()

>>> s2=set("abdabdxc")
>>> print(s2)
{'b', 'd', 'a', 'x', 'c'}
>>> s2.remove("c")
>>> s2
{'b', 'd', 'a', 'x'}
>>> # 删除之前先判断一下
>>> if "a" in s2:
...     s2.remove("a")
...
>>> # 第二种判断
>>> try:
...     s2.remove("x")
... except KeyError as e:
...     print("集合中不存在该元素!")
... else:
...     print("集合中元素删除成功!")
...
集合中元素删除成功!
>>> s2
{'b', 'd'}

1.2.5 修改集合元素:转成list修改后再转成set

>>> s=set("aabdcd")
>>> s
{'a', 'b', 'c', 'd'}
>>> l = list(s)
>>> l
['a', 'b', 'c', 'd']
>>> l[0]="**"
>>> s=set(l)
>>> s
{'b', 'c', 'd', '**'}

1.2.6 遍历集合

>>> for i in set("abca"):
...     print(i)
...
a
b
c
>>> a=frozenset("abcd")
>>> a
frozenset({'a', 'b', 'c', 'd'})
>>> type(a)
<class 'frozenset'>
>>> for i in a:
...     print(i)
...
a
b
c
d

集合是无序的,它不支持切片

>>> s=set("abcd")
>>> s
{'a', 'b', 'c', 'd'}
>>> s[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not subscriptable

但可以用枚举实现:

>>> sTest = set(['e', 'two', 'o', 'n', '1', '3', '2'])
>>> #遍历集合
>>> for index, elem in enumerate(sTest) :
...     print ("元素的索引号为:", index, "对应的元素为:", elem)
...
元素的索引号为: 0 对应的元素为: o
元素的索引号为: 1 对应的元素为: n
元素的索引号为: 2 对应的元素为: 2
元素的索引号为: 3 对应的元素为: 3
元素的索引号为: 4 对应的元素为: 1
元素的索引号为: 5 对应的元素为: e
元素的索引号为: 6 对应的元素为: two

1.2.7 discard():查找元素并删除

➢ 函数原型:
setVar.discard(elemen
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Oracle第八章的课堂笔记中,我们学习了集合运算的概念和用法。集合运算是一种对数据库中的数据进行操作和查询的技术,它可以将多个查询的结果进行合并、交叉和排除等操作。 首先,我们学习了并集运算(UNION)。并集运算可以将两个或多个查询的结果合并为一个结果集,它会去除重复的行,并按照查询语句的顺序进行排序。我们需要注意的是,并集运算中要求两个查询的列数和类型必须匹配。 接着,我们学习了交集运算(INTERSECT)。交集运算可以将两个查询的结果中的共同部分提取出来,生成一个新的结果集。交集运算同样要求两个查询的列数和类型必须匹配,而且结果集中不会出现重复的行。 然后,我们学习了差集运算(MINUS)。差集运算可以从一个查询的结果中排除另一个查询的结果,生成一个新的结果集。差集运算同样要求两个查询的列数和类型必须匹配,并且结果集中不会出现重复的行。 最后,我们练习了使用这些集合运算符来解决实际问题。通过编写SQL查询语句,我们可以根据给定的条件和要求,使用并集、交集和差集等运算符来获取我们需要的结果。 总之,Oracle第八章集合运算课堂笔记和练习让我们了解了集合运算的概念和用法,以及如何使用这些运算符来操作和查询数据库中的数据。这些知识对我们在实际应用中更高效地处理和分析数据具有重要意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值