代码改变世界

python基本数据类型-集合

2016-12-20 22:37  ZN23&24  阅读(75)  评论(0)    收藏  举报

集合set    

基本数据类型特点:

    可变:列表,字典   不可变:字符串,数字,元组

  1、不同的元素组成

  2、无序

1 s = {1,2,5,5,'g','h'}
2 print(s)

  执行结果:

1 {2, 1, 'g', 'h', 5}

3、集合中的元素必须是不可变类型

    加入可变的类型会报错

方法:

  1、add  添加,添加可变的数据类型也是会报错的

1 s = {1,2,5,5,'g','h'}
2 s.add(3)
3 print(s)

  执行结果:

1 {1, 2, 3, 5, 'h', 'g'}

 

  2、clear   清空集合

 

  3、intersection  交集,相当于&

1 s = {1,7,9}
2 s1 = {1,9,5}
3 print(s&s1)
4 print(s.intersection(s1))
5 执行结果
6 {9, 1}
7 {9, 1}

  执行结果

1 {9, 1}
2 {9, 1}

  4、union  并集,相当于 |

1 s = {1,7,9}
2 s1 = {1,9,5}
3 print(s|s1)
4 print(s.union(s1))<br>执行结果<br>{1,5,7,9}<br>{1,5,7,9}

 

  5、difference  差集,相当于-

1 s = {1,7,9}
2 s1 = {1,9,5}
3 print(s-s1)
4 print(s.difference(s1))
5 执行结果
6 {7}
7 {7}

 

  6、symmetric_difference  交叉补集,相当于^

1 s = {1,7,9}
2 s1 = {1,9,5}
3 print(s^s1)
4 print(s.symmetric_difference(s1))<br>
5 执行结果
6 {5, 7}
7 {5, 7}

  

  7、difference-update   差集更新

  8、isdisjoint        判断是否有交集

  9、issubset        判断是否为子集

1 s1={1,2}
2 s2={1,2,3}
3 print(s1.issubset(s2))
4 print(s2.issubset(s1))
5  
6 True
7 False

 

  10、issuperset       判断是否为父集

1 s1={1,2}
2 s2={1,2,3}
3 print(s2.issuperset(s1))
4  
5 True

 

  11、update  更新多个值,可迭代都可传

 

  12、pop,remove,discard  均为删除

1 s = {9, 'sb', 1, 2, 3, 4, 5, 6}
2 s.pop()                           # pop不能指定删除,只可以随机删除
3 print(s)
4 s = {9, 'sb', 1, 2, 3, 4, 5, 6}  # 指定删除元素,当删除的元素不存在时,删除会报错
5 s.remove(4)
6 print(s)
7 s = {9, 'sb', 1, 2, 3, 4, 5, 6}
8 s.discard(5)
9 print(s)                          # 指定元素删除;和remove唯一的区别删除不存在不会报错

 

  frozenset 不可变集合  元素一经创建,不可增加、删除和修改。因此没有add、pop、discard、remove和所有以_update结尾的方法。但可以作为左值接受赋值。

  frozenset和set混合运算时,返回的值以左边的操作变量为准。

ps1:

1 frozenset(a) | set(b)   的返回值就是frozenset,
2 
3 set(a) | frozenset(b)  的返回值就是set

 

ps2:

1 s1=frozenset('hello')
2 print(s1)

执行结果:

1 frozenset({'l', 'h', 'o', 'e'})

 

 

示例:

 1 s1={1,2,3,1}                #定义一个set s1 如果s1={}为空则默认定义一个字典
 2 s2=set([2,5,6])             #定义一个set s2
 3 print(s1)                   #s1={1,2,3} 自动去除重复的元素
 4  
 5 s1.add(5)                   #s1={1,2,3,5} 添加一个元素
 6 print(s1)
 7  
 8 s3=s1.difference(s2)        #返回一个s1中存在而不存在于s2的字典s3,s3={1,3},而s1并没有改变
 9 print(s3)
10  
11 s1.difference_update(s2)    #s1跟新成上面的s3 s1={1,3}
12 s1.discard(1)               #删除元素1,不存在的话不报错  s1={3}
13 print(s1)
14 s1.remove(3)                #删除元素3,不存在的话报错    s1={}
15 print(s1)
16 s1.update([11,2,3])         #跟新s1中的元素,其实是添加   s1={11,2,3}
17 print(s1)
18 k=s1.pop()                  #删除一个元素,并将删除的元素返回给一个变量,无序的,所以并不知道删除谁
19  
20                   
21 s1={1,2,3,4}          #这里重新定义了集合s1,s2
22 s2={3,4,5,6}
23 r1=s1.intersection(s2)       #取交集,并将结果返回给一个新的集合 r1={3,4}
24 print(r1)
25 print(s1)
26 s1.intersection_update(s2)   #取交集,并将s1更新为取交集后的结果 s1={3,4}
27 print(s1)
28  
29 k1=s1.issubset(s2)           #s1是否是s2的的子序列是的话返回True,否则False 这里k1=true
30 print(k1)
31 k2=s1.issuperset(s2)         #s1是否是s2的父序列 k2=False
32  
33 k3=s2.isdisjoint(s1)         #s1,s2,是否有交集,有的话返回False,没有的话返回True
34 print(k3)
35 s1.update([1,2])             #s1={1,2,3,4}
36 r3=s1.union(s2)              #取并集将结果返回给r3 r3={1,2,3,4,5,6}
37 print(r3)
38 r2=s1.symmetric_difference(s2)          #r2=s1并s2-s1交s2  r2={1,2,5,6}
39 print(r2)
40 s1.symmetric_difference_update(s2)      #s1更新为 s1并s2 - s1交s2   s1={1,2,5,6}
41 print(s1)