集合特性
1.集合(set)是一个无序的不重复元素序列。
2.可以使用大括号{ }或者set()函数,注意:创建空集合必须用 set(),而{ }代表一个空字典。。。
尝试创建一个set
1.集合之间的运算
#!/usr/bin/python3
list1 = ['apple','orange','tomato','banana','apple','peach','orange']
print(list1,'的type:',type(list1))
fruits1 = set(list1)
#依据结果上看,集合一个不重复的元素序列(且每次执行元素的结果不尽相同)
print(fruits1,'的type:',type(fruits1))
fruits2 = {'apple','orange','tomato'}
print(fruits2)
print(fruits2 in fruits1,'这个结果目前表示两个set间不能使用in来判断包含及不包含')
if('apple','orange','tomato' in fruits1):
print('f2 在 f1中,但必须列出全元素而非set的情况')
else:
print('不存在')
if({'apple','orange','tomato'} in fruits1):
print('f2 在 f1中')
else:
print('不存在,从结果看截止到目前set间判断包含关系至少不能使用 in')
if(fruits2 in fruits1):
print('f2 在 f1中')
else:
print('不存在,从结果看截止到目前set间判断包含关系至少不能使用 in')
#下面尝试两个集合运算
#包含于fruits2 却不包含于fruits1的元素
print('fruits2 - fruits1:',fruits2 - fruits1)
#包含于fruits1 却不包含于 fruits2的元素
print('fruits1 - fruits2:',fruits1 - fruits2)
print('fruits1 或者 fruits2包含的元素 fruits1 | fruits2:',fruits1 | fruits2)
print('frutis1 和 frutis2 均包含的元素 fruits1 & fruits2:',fruits1 & fruits2)
print('不同时包含于fruits1 和 fruits2的元素 fruits1 ^ fruits2:',fruits1 ^ fruits2)
2.集合的基本操作
2.1添加元素
set.add(x)
将元素添加到set集合中
#!/usr/bin/python3 f1 = {'apple','orange','tomato','banana','apple','peach','orange'} print(type(f1),'f1:',f1) f1.add('strawberry') print('新f1:',f1)
set.update(x) x可以有多个,用逗号(,)分开。
#!/usr/bin/python3 #尝试使用update更新 f2 = {'asq','bbq','lucis'} print('f2:\t',f2) f2.update({1,2}) print('update后的f2:\t',f2) f2.update([1,3,5],(211,2)) print('最终形态的f2:\t',f2,'type:\t',type(f2))
2.2移除元素
set.remove(x) 将元素 x从 set集合移除,如果不存在则报错。
#!/usr/bin/python3 s1 = {'assassin', 'cindycat', 'trump', 'modi', 'bobby', 'nurhuchi'} print(s1,':\t',type(s1)) s1.remove('assassin') print(s1) #s1.remove('assassin') print(s1)
set.discard(x) 此方式也可以移除集合中元素,且如果元素不存在,不会发生错误
#!/usr/bin/python3 s1 = {'assassin', 'cindycat', 'trump', 'modi', 'bobby', 'nurhuchi'} print(s1,':\t',type(s1)) s1.discard('assassin') print(s1) s1.discard('assassin') print(s1)
set.pop()随机移除一个元素
#!/usr/bin/python3 s1 = {'assassin', 'cindycat', 'trump', 'modi', 'bobby', 'nurhuchi'} print(s1,':\t',type(s1)) s1.pop() print(s1)
从结果上看,每次执行结果不同,set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
3.计算集合元素个数
len(set)
#!/usr/bin/python3 s1 = {'assassin', 'cindycat', 'trump', 'modi', 'bobby', 'nurhuchi'} print('len(s1):',len(s1))
4.清空集合
set.clear()
#!/usr/bin/python3 s1 = {'assassin', 'cindycat', 'trump', 'modi', 'bobby', 'nurhuchi'} s1.clear() print('sq.clear:',s1)
5.判断集合是否存在相关元素
x in set
#!/usr/bin/python3 s1 = {'assassin', 'cindycat', 'trump', 'modi', 'bobby', 'nurhuchi'} if ('assassin' in s1 ): print('assassin' in s1) else : print('assassin not in s1')
序号 | 方法 | 描述 |
1 | add() | 添加元素 |
2 | clear() | 移除集合中所有元素 |
3 | copy() | 拷贝一个集合 |
4 | difference() | 返回多个集合的差集 |
5 | difference_update() | 移除集合中元素,该元素在指定集合中也存在 |
6 | discard() | 删除指定元素 |
7 | intersection() | 返回集合的交集 |
8 | intersection_update() | 返回集合的交集 |
9 | isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
10 | issubset() | 判断指定集合是否为该方法参数集合的子集. |
11 | issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
12 | pop() | 随机删除一个元素 |
13 | remove() | 移除指定元素 |
14 | summetric_difference() | 返回两个集合中不重复的元素集合。 |
15 | summetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
16 | union() | 返回两个集合的并集 |
17 | update() | 给集合添加元素 |
18 |