python 集合

Python集合

集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

集合对象是一组无序排列hashable value:集合成员可以做字典的键。

集合就像是 list 和 dict 的组合。

 

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list或tup作为输入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

 

注意:set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。

cc = set([1, 2, 3, 4, 5, 5, 5])
c = [1, 2, 3]
cc.add(c)
Traceback (most recent call last):
  File "C:/Users/gck1d6o/Desktop/FTP/day12/set_dict.py", line 16, in <module>
    cc.add(c)
TypeError: unhashable type: 'list'

 

集合两大功能:

1、去重

集合跟字典key一样天生去重,并且无序

 

2、关系测试

^  对称差集

 

集合的方法

集合是唯一项的无序集,集合不提供索引或切片操作,集合的长度可变,但放入里面的必须是不可变的。集合分为两种:可变集合(set)和不可变集合(frozenset)。

  1. s = set([1, 2, 3])
  2. fs = frozenset([1, 2, 3])

集合通用方法和操作

方法和操作描述
len(s) 返回集合s的项目数
s.copy() 返回集合s的一份副本
s.difference(t) 求差集,返回在s中,但不在t中的项目
s.intersection(t) 求交集,返回同时在s和t中的项目
s.isdisjoint(t) s和t中没有相同项,返回True
s.issubset(t) s是t的子集,返回True
s.issuperset(t) s是t的超集,返回True
s.union(t) 求并集,返回在s或t中的项目

可变集合set的方法和操作

方法和操作描述
s.add(item) 添加item
s.clear() 清空集合s
s.difference_update(t) 在s中删除同时在s和t中的项目
s.discard(item) 删除item
s.pop() 弹出任一项
s.remove(item) 删除item,没有则引发异常
s.update(t) 将t中所有项添加到t中,t为任意支持迭代对象

 

s.issubset(t)  

s <= t  

测试是否 s 中的每一个元素都在 t 中  

s.issuperset(t)  

s >= t  

测试是否 t 中的每一个元素都在 s 中  

s.union(t)  

s | t  

返回一个新的 set 包含 s 和 t 中的每一个元素  

s.intersection(t)  

s & t  

返回一个新的 set 包含 s 和 t 中的公共元素  

s.difference(t)  

s - t  

返回一个新的 set 包含 s 中有但是 t 中没有的元素  

s.symmetric_difference(t)  

s ^ t  

返回一个新的 set 包含 s 和 t 中不重复的元素  

 

实现去重操作,又可以保持原有的顺序

posted @ 2017-01-21 15:11  Vincen_shen  阅读(142)  评论(0)    收藏  举报