码迷,mamicode.com
首页 > 编程语言 > 详细

python之set

时间:2017-09-28 00:32:02      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:一个   ror   call   card   ddr   不重复   diff   移除   error   

一、set集合介绍

set集合,是一个无序的,且不重复的元素集合

定义方式使用"{}",也可以使用set(iterable)内置函数定义,但iterable参数只能是可迭代对象的对象

>>> set1 = {1,2,3,4,1,3}  #定义集合,默认会将重复的去掉
>>> set1
{1, 2, 3, 4}

>>> aa = abcde
>>> set2 = set(aa)  #使用set函数定义集合
>>> set2
{a, b, d, c, e}
>>> set3 = set(python)
>>> set3
{y, p, o, h, n, t}

>>> set2 = set(range(5))  #如果使用数字必须使用迭代序列
>>> set2
{0, 1, 2, 3, 4}

二、集合的方法

1、s.add()添加元素

>>> set2
{1, 2, 3, 4, 5}
>>> set2.add(6)
>>> set2
{1, 2, 3, 4, 5, 6}
>>> set2.add(addr)
>>> set2
{1, 2, 3, 4, 5, 6, addr}
2、s.clear()情况所有元素
>>> set2
{1, 2, 3, 4, 5, 6, addr}
>>> set2.clear()
>>> set2
set()

3、s.copy()浅拷贝

>>> set1
{1, 2, 3, 4, 6, addr}
>>> set3=set1.copy()
>>> set3
{1, 2, 3, 4, 6, addr}

4、s.difference(b)

返回两个集合差集中s的元素

>>> set1 = {1,2,3,4}
>>> set2 = {3,4,5,6}
>>> set1.difference(set2)  #用set2比较set1时,返回set1和set2交集中set1剩余的元素
{1, 2}
>>> set2.difference(set1) #理解同上,返回自身集合中对方集合没有的新集合
{5, 6}

5、s.difference_update(b)

从s集合中移除与b集合交集的元素,并更新到s集合

>>> set1 = {1,2,3,4}
>>> set2 = {3,4,5,6}
>>> set1.difference_update(set2)
>>> set1
{1, 2}
>>> set2.difference_update(set1) #没有交集元素,所以不变
>>> set2
{3, 4, 5, 6}

6、s.discard(obj)

删除指定元素,如不存在不会报错

>>> set2
{3, 4, 5, 6}
>>> set2.discard(6)
>>> set2
{3, 4, 5}
>>> set2.discard(7)  #元素不存在,没有报错
>>> set2
{3, 4, 5}

7、s.intersection(b)

返回两个或多个集合的交集,并返回

>>> set1 = {1,2,3,4}
>>> set2 = {3,4,5,6}
>>> set1.intersection(set2)  #返回交集值
{3, 4}
>>> set3 = {3,6,8,9}
>>> set1.intersection(set2,set3) #必须三个set都存在才返回
{3}

8、s.intersection_update(b)

根据当前s与比较b的交集值更新到s集合中

>>> set1 = {1,2,3,4,5,6}
>>> set2 = {3,4,5,7,8,9}
>>> set1.intersection_update(set2) #取交集值更新到自身set
>>> set1
{3, 4, 5}
>>> set2
{3, 4, 5, 7, 8, 9}

9、s.isdisjoint(b)

如果两个集合没有交集返回True否则返回False

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

10、s.issubset(b)

s集合元素是否被b集合包含,是则返回True否则返回False

>>> s1 = {1,2}
>>> s2 = {1,2,3,4}
>>> s3 = {11,22}
>>> s1.issubset(s2)
True
>>> s1.issubset(s3)
False

11、s.issuperset(b)

判断s集合元素是否包含了所以b的集合元素,是返回True否则返回False

>>> s1 = {1,2}
>>> s2 = {1,2,3,4}
>>> s2.issuperset(s1)
True
>>> s1.issuperset(s2)
False

12、s.pop()

集合默认排序后,随机删除一个元素,并返回该元素,默认删除第一个元素

>>> s2 = {name,age,salary,shool}
>>> s2
{salary, name, shool, age}
>>> s2.pop()
salary
>>> s2.pop()
name
>>> s2.pop()
shool

13、s.remove(obj)

移除集合中的指定值,和discard一样,只是remove在值不存在时会报错。

>>> s1 = {1,2,3,4}
>>> s1.remove(2)
>>> s1
{1, 3, 4}
>>> s1.remove(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 5

14、s.symmetric_difference()

返回两个集合的差集

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.symmetric_difference(s2)  #返回两个集合不交集的元素
{1, 2, 5, 6}
>>> s2.symmetric_difference(s1)
{1, 2, 5, 6}

15、s.symmetric_difference_update(b)

将两个集合不交集的元素返回给s

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 2, 5, 6}

16、s.union(b)

返回两个集合的并集

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6}

17、s.update(b)

以集合b扩展s集合

>>> s1 = {1,2,3}
>>> s2 = {4,5,6}
>>> s1.update(s2)
>>> s1
{1, 2, 3, 4, 5, 6}

python之set

标签:一个   ror   call   card   ddr   不重复   diff   移除   error   

原文地址:http://www.cnblogs.com/zhangxinqi/p/7603021.html

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