python之路12--之集合的所有操作

一、集合说明

集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

  去重,把一个列表变成集合,就自动去重了。

  关系测试,测试两组数据之前的交集、差集、并集等关系。

二、集合的操作

1、创建集合的两种方法

set1 = set({1,2,3,4})
set2 = {1,2,3}

2、集合的增加操作

set1 = {'ouyang','qiyi','zhangsan','lisi','ermazi'}

set1.add('nvshen')           #随机添加到集合里,集合是无序的
set1.update('abc')            #迭代添加,将添加的元素拆分为最小元素添加,即添加了abc三个元素

3、集合的删除操作

set1.pop()                   #随机删除,有返回值(返回值为删除的内容)
set1.remove("ouyang")           #按元素删除,如果删除的元素不在集合里会报错
set1.clear()                   #清空集合
del set1                       #删除整个集合,

4、集合查询操作

说明:因为集合是无序的,所以集合只能循环查询

for i in set1:
    print(i)

三、求集合的交集和并集

1、求交集(& 或者 intersection、即两个集合里都有的元素)

# set2 = {1,2,3,4,5}
# set3 = {4,5,6,7,8}
# set4 = set2 & set3
# print(set4)
# print(set2.intersection(set3))

2、求并集(| 或者 union、将两个集合里重复的内容给去重)

set2 = {1,2,3,4,5}
set3 = {4,5,6,7,8}
print(set2 | set3)
print(set3.union(set2))

3、差集。(- 或者 difference、即set1里有的set2里没有的,如果反过来就是set2里有的,set1里没有的)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)  # {1, 2, 3}
print(set1.difference(set2))  # {1, 2, 3}

4、反交集。 (^ 或者 symmetric_difference、即两个集合里重复的内容去掉)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7,8}

5、子集与超集

set1 = {1,2,3}
set2 = {1,2,3,4,5,6}                #set2里的元素完全包含set1的元素,就可以说set1是set2的子集,set2是set1的超级

print(set1 < set2)
print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。

print(set2 > set1)
print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

6、frozenset不可变集合,让集合变成不可变类型。

s = frozenset('barry')
print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

 

posted @ 2018-07-22 17:01  欧-阳  阅读(115)  评论(0)    收藏  举报