知识点
集合:set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
集合中的元素的三个特征:
1)确定性(元素必须可hash) 2)互异性(去重) 3)无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合 【注意】:集合存在的意义就在于去重和关系运算。
创建集合
创建一个空集合需使用set() 工厂函数: 语法:
class set([iterable])
参数说明:
iterable
示例:
>>>
set1 =
set()
>>>
type(
set1)
<class
'set'>
>>>
set2 = {
11,
22,
33,
12,
11}
>>>
type(
set2)
<class
'set'>
>>>
set2
{
33,
11,
12,
22}
【注意】:注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典
>>> a =
set(
'boy')
>>> a
{
'b',
'y',
'o'}
>>> b =
set([
'y',
'b',
'o',
'o'])
>>> b
{
'b',
'y',
'o'}
>>> f =
set((
'k1',
'k1',
'k2',
'k3',
1,
2))
>>> f
{
1,
2,
'k2',
'k3',
'k1'}
>>> c =
set({
'k1':
1,
'k2':
2,
'k3':
2})
>>> c
{
'k2',
'k1',
'k3'}
>>>
type(c)
<class
'set'>
>>> d = {
1,
2,
3,
4}
>>>
type(d)
<class
'set'>
>>> d
{
1,
2,
3,
4}
>>> e = {(
1,
2,
1,
1)}
>>> e
{(
1,
2,
1,
1)}
创建不可变集合
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
语法:
class frozenset([iterable])
参数
iterable
示例:
>>>a = frozenset(range(
10))
>>> a
frozenset([
0,
1,
2,
3,
4,
5,
6,
7,
8,
9])
>>> b = frozenset(
'runoob')
>>> b
frozenset([
'b',
'r',
'u',
'o',
'n'])
>>> num3 = frozenset([
1,
2,
3,
4,
5])
>>> num3
frozenset({
1,
2,
3,
4,
5})
>>> num3.add(
0)
Traceback (most recent call last):
File
"<pyshell#42>", line
1,
in <module>
num3.add(
0)
AttributeError:
'frozenset' object has no attribute
'add'
集合的关系运算
in,not in:判断某元素是否在集合内
>>> a
{
'b',
'y',
'o'}
>>> b
in a
False
>>> 'b' in a
==,!=:判断两个集合是否相等
>>> a = {
3,
4,
5}
>>> b = {
4,
3,
5}
>>> a == b
True
集合的内建方法
集合(s).方法名等价符号方法说明
s.issubset(t)s <= t子集测试(允许不严格意义上的子集):s中所有的元素都是t的成员s < t子集测试(严格意义上):s中所有的元素都是t的成员
示例:
>>> s = {
1,
2,
3,
4}
>>> t = {
1,
2,
3,
4,
5}
>>> s.issubset(t)
True
>>> s <= t
True
>>> s < t
集合(s).方法名等价符号方法说明
s.issuperset(t)s >= t超集测试(允许不严格意义上的超集):t中所有的元素都是s的成员s > t超集测试(严格意义上):t中所有的元素都是s的成员
示例:
>>> s = {
1,
2,
3,
4,
5}
>>> t = {
1,
2,
3}
>>> s.issuperset(t)
True
>>> s >= t
True
>>> s > t
True
集合(s).方法名等价符号方法说明
s.union(t)s | t合并操作:s “或” t 中的元素
示例:
>>> s =
{1,2,3,4}
>>> t =
{2,3,4,5}
>>> s.union(t)
{1, 2, 3, 4, 5}
>>> s|t
{1, 2, 3, 4, 5}
集合(s).方法名等价符号方法说明
s.intersection(t)s & t交集操作:s “与” t 中的元素
示例:
>>> s =
{1,2,3,4}
>>> t =
{2,3,4,5}
>>> s & t
{2, 3, 4}
>>> s.intersection(t)
{2, 3, 4}
集合(s).方法名等价符号方法说明
s.difference(t)s - t差分操作:在s中存在,在t中不存在的元素
示例:
>>> s =
{1,2,3,4}
>>> t =
{2,3,4,5}
>>> s - t
{1}
>>> s.difference(t)
{1}
集合(s).方法名等价符号方法说明
s.symmetric_difference(t)s ^ t对称差分操作:s “或” t 中的元素,但不是s和t的共有元素
>>> s =
{1,2,3,4}
>>> t =
{2,3,4,5}
>>> s.symmetric_difference(t)
{1, 5}
>>> s ^ t
{1, 5}
集合(s).方法名等价符号方法说明
s.copy()返回s的浅拷贝
示例:
>>> a = {
1,
2,
3}
>>> b = a.copy()
>>> b
{
1,
2,
3}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.update(t)s |= t将t中的元素添加到s中
示例:
>>> s = {
1,
2,
3,
4}
>>> t = {
2,
3,
4,
5}
>>> s |= t
>>> s
{
1,
2,
3,
4,
5}
>>> s = {
1,
2,
3,
4}
>>> t = {
2,
3,
4,
5}
>>> s.update(t)
>>> s
{
1,
2,
3,
4,
5}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.intersection_update(t)s &= t交集修改操作:s中仅包括s和t中共有的成员
示例:
>>> s = {
1,
2,
3,
4}
>>> t = {
2,
3,
4,
5}
>>> s.intersection_update(t)
>>> s
{
2,
3,
4}
>>> s = {
1,
2,
3,
4}
>>> t = {
2,
3,
4,
5}
>>> s &= t
>>> s
{
2,
3,
4}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.difference_update(t)s -= t差修改操作:s中包括仅属于s但不属于t的成员
示例:
>>> s = {
1,
2,
3,
4}
>>> t = {
2,
3,
4,
5}
>>> s -= t
>>> s
{
1}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.symmetric_difference_update(t)s ^= t对称差分修改操作:s中包括仅属于s或仅属于t的成员
示例:
>>> s = {
1,
2,
3,
4}
>>> t = {
2,
3,
4,
5}
>>> s ^= t
>>> s
{
1,
5}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.add(obj)加操作:将obj元素添加到s中
示例:
>>> s = {
1,
2,
3,
4}
>>> s.add(
'fs')
>>> s
{
1,
2,
3,
4,
'fs'}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.remove(obj)删除操作:将obj元素从s中删除,如果s中不存在obj,将引发异常
示例:
>>> s = {
1,
2,
3,
4,
'fs'}
>>> s.remove(
'fs')
>>> s
{
1,
2,
3,
4}
>>> s.remove(
'a')
Traceback (most recent call last):
File
"<pyshell#182>", line
1,
in <module>
s.remove(
'a')
KeyError:
'a'
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.discard(obj)丢弃操作:将obj元素从s中删除,如果s中不存在obj,也没事
示例:
>>> s = {
1,
2,
3,
4,
'fs'}
>>> s.discard(
'fs')
>>> s
{
1,
2,
3,
4}
>>> s.discard(
'a')
>>> s
{
1,
2,
3,
4}
集合(s).方法名等价符号方法说明
以下方法不适用于不可变集合frozenset()s.pop()弹出操作:移除并返回s中任意一个元素s.clear()清除操作:请出s中所有的元素
>>> s = {
1,
2,
3,
4}
>>> s.pop()
1
>>> s
{
2,
3,
4}
>>> s.pop()
2
>>> s
{
3,
4}
>>> s.clear()
>>> s
set()
课后习题
转载于:https://www.cnblogs.com/wanbin/p/9514683.html
相关资源:JAVA上百实例源码以及开源项目