码迷,mamicode.com
首页 > 其他好文 > 详细

set集合

时间:2016-05-27 21:51:15      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

一、set集合的创建

set_list = set([1,3,5,7,9])      #创建一个数值集合  

set_str = set("world")         #创建一个唯一字符的集合  

 

二、set{}集合的特点:

1、set集合是无序的,跟字典一样,都是无序的,因为是无序的,所有无法通过用索引去求值

 1 >>>dic={"k1":1,"k2":2,"k3":3}  
 2 >>>print(dic)
 3 #可以看到字典是倒着输出的,并没有严格按照顺序输出
 4 {k3: 3, k2: 2, k1: 1}   
 5 
 6 >>>list1=[11,22,33,33,11,66,55,99]
 7 >>list2=set(a)
 8 >>print(list2)
 9 #可以看到list2也是并没有严格按照顺序输出
10 {33, 66, 99, 11, 22, 55}

2、set{}集合是去重复的

1 >>>list1=[77,22,33,33,11,66,55,88,77,]
2 >>>list2=set(list1)
3 >>>print(list2)
4 {33, 66, 11, 77, 22, 55, 88}
5 
6 >>>str_1="aabbccddfakiclgm"
7 >>>str_2=set(str_1)
8 >>>print(str_2)
9 {c, d, l, m, a, g, i, f, b, k}

三、set集合中的一些常用方法

1、add()方法,就是添加一些元素

1 str1=set("bruce")
2 str1.add("supper")
3 print(str1)
4 
5 #输出以下结果
6 {c, e, r, u, b, supper}

2、clear() 方法,就是清空集合里面的元素

1 str1=set([1,2,3,4])
2 str1.clear()
3 print(str1)
4 
5 #输出结果
6 set()

3、copy()方法,就是拷贝的意思

1 str3=set([1,2,3,4,5])
2 str4=str3.copy()
3 print(str4)
4 print(str3)
5 
6 #输出以下结果,str4就是str3的浅拷贝
7 {1, 2, 3, 4, 5}
8 {1, 2, 3, 4, 5}

4、difference()方法就是找出两个集合的不同元素,相当于求差集

1 str2=set([1,2,3,4])
2 str3=set([1,2,3,4,5])
3 
4 #用difference方法后可以看到两个集合的差集
5 {5}

 5、difference_update()方法就是找出两个集合的差集,并把差集更新为第一个集合

 1 >>>str2=set([1,2,3,4])
 2 >>>print(str2)
 3 #输出str2
 4 {1, 2, 3, 4}
 5 
 6 
 7 >>>str3=set([1,2,3,4,5])
 8 >>>print(str3)
 9 #输出str3
10 {1, 2, 3, 4, 5}
11 
12 >>>str3.difference_update(str2)
13 >>>print(str3)
14 #先找出str3和str2的不同,即为下面的{5},然后把两个集合的差集赋值给str3
15 {5}

6、discard()方法,就是用来移除集合里面指定的元素

>>>str3=set([1,2,3,4,5])
>>>str3.discard(4)
>>>print(str3)
#可以看到结果中,集合把元素4移除了
{1, 2, 3, 5}

7、intersection()方法,就是求两个集合的交集

 1 a=set("hello,world")
 2 b=set("hello")
 3 c=a.intersection(b)
 4 print(c)
 5 #输出结果,得到集合a,b的交集c
 6 {h, l, e, o}
 7 
 8 
 9 set1={1,3,4,5,6}
10 set2={1,4,56,7}
11 set3=set1.intersection(set2)
12 print(set3)
13 #输出结果,得到集合set1,set2的交集set3
14 {1, 4}

8.intersection_update()方法,就是求两个集合的交集并把结果更新赋值给第1个集合

1 set1={1,3,4,5,6}
2 set2={1,4,56,7}
3 set1.intersection_update(set2)
4 
5 print(set1)
6 
7 #输出结果,可以看到set1变为两者的交集
8 {1, 4}

9、isdisjoint()判断两个集合间有没有交集,如果没有就返回 True,有就返回False

1 >>> set1={"",3,2,4}
2 >>> set2={"",""}
3 >>> set1.isdisjoint(set2)
4 False
5 >>> set3={1,3,4,5,6}
6 >>> set4={2,7,8}
7 >>> set3.isdisjoint(set4)
8 True

10、issubset()方法判断这个集合是不是别的集合的子集,是则True,否则False

 1 >>> help(set.issubset)
 2 Help on method_descriptor:
 3 
 4 issubset(...)
 5     Report whether another set contains this set.
 6 
 7 >>> set5={1,2}
 8 >>> set6={1,2,3,4,5}
 9 >>> set5.issubset(set6)
10 True

11、issuperset()方法就是判断这个集合是不是别的集合的父集合

 1 >>> set5={1,2}
 2 >>> set6={1,2,3,4,5}
 3 >>> set5.issubset(set6)
 4 #这里看到set5是set6的子集合
 5 True
 6 >>> set5.issuperset(set6)
 7 #这里判断set5不是set6的父集合,返回False
 8 False
 9 >>> set6.issuperset(set5)
10 #这里判断set5是set6的父集合,返回True
11 True

12、pop()方法,就是随机移除集合里面的一个元素,如果集合是空的,就会报错

 1 >>> set_1={1,2,3,4}
 2 >>> set_1.pop(1)
 3 #以下可以看到这个方法里面不能传参数,否则会报错
 4 Traceback (most recent call last):
 5   File "<pyshell#31>", line 1, in <module>
 6     set_1.pop(1)
 7 TypeError: pop() takes no arguments (1 given)
 8 >>> set_1.pop()
 9 1
10 >>> set_1.pop()
11 2
12 >>> set_1.pop()
13 3
14 >>> set_1.pop()
15 4
16 >>> print(set_1)
17 set()
18 >>> set_1.pop()
19 #当集合里面为空的时候,再去pop就会报错
20 Traceback (most recent call last):
21   File "<pyshell#37>", line 1, in <module>
22     set_1.pop()
23 KeyError: pop from an empty set

13、remove()方法,就是删除集合里面指定的元素,当集合里面不存在要移除的元素时会报错,而discard()方法就不会报错,这是它们的区别

 1 >>> s={1,2,3,4,5}
 2 >>> s.discard(6)
 3 >>> print(s)
 4 {1, 2, 3, 4, 5}
 5 >>> s.remove(4)
 6 >>> print(s)
 7 {1, 2, 3, 5}
 8 >>> s.remove(6)
 9 Traceback (most recent call last):
10   File "<pyshell#46>", line 1, in <module>
11     s.remove(6)
12 KeyError: 6

14、symmetric_difference()方法求对称交集,把两个集合的互为不同的元素放到一起,会返回一个值

>>> s1={1,2,3,4,5,7,8}
>>> s2={11,22,3,4,5,77,88}
#可以看到两个集合的对称交集会返回一个值,所以可以赋值给s3
>>> s3=s1.symmetric_difference(s2)
>>> print(s3)
#所谓对称交集就是把两个集合里互为不同的元素放到一起
{1, 2, 7, 8, 11, 77, 22, 88}

15、symmetric_difference_update()方法求对称交集并更新赋值给第一个交集,不会返回值

 1 s1={1,2,3,4,5,7,8}
 2 s2={11,22,3,4,5,77,88}
 3 s3=s1.symmetric_difference_update(s2)
 4 print(s3)
 5 #输出None,因为这个方法不会返回值,所以为None
 6 None
 7 
 8 
 9 s1.symmetric_difference_update(s2)
10 print(s1)
11 #输出结果,s1重新赋值为两个集合的对称交集
12 {1, 2, 3, 4, 5, 7, 8}

16、union()方法,就是求两个集合的并集

1 s1={1,2,3,4,5,7,8}
2 s2={11,22,3,4,5,77,88}
3 s3=s1.union(s2)
4 print(s3)
5 
6 #以下是输出
7 {1, 2, 3, 4, 5, 7, 8, 11, 77, 22, 88}

17、update()方法,更新集合

1 s1={1,2,3,4,5,7,8}
2 s4={55,66,99}
3 s1.update(s4)
4 print(s1)
5 #以下是输出
6 {1, 2, 3, 4, 5, 66, 7, 8, 99, 55}

 

set集合

标签:

原文地址:http://www.cnblogs.com/wspcoding/p/5535836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!