首页 > 编程语言 > 详细

python(3)-集合

时间:2016-02-25 00:18:21      阅读:273      评论:0      收藏:0      [点我收藏+]

集合就是把不同的元素组织在一起,但在集合中不允许有重复的元素。

>>> a = set()             #创建集合
>>> type(a) 
<class set>

集合中不允许出现重复的元素

>>> a.add(jack)         #向集合中添加元素
>>> print(a)
{jack}
>>> a.add("jack")       #再次向集合中添加同样的元素
>>> print(a)
{jack}                         #同样的元素只能出现一次

集合的访问:

因为集合是无序的,所以不能对它进行切片,只能遍历,in 或 not in 等方法

>>> s = set("fjihutiejhgir")
>>> print(s)
{u, h, i, e, g, j, t, r, f}
>>> a in s
False
>>> a not in s
True
>>> for i in s:
...   print(i)
...
u
h
i
e
g
j
t
r
f
>>>

向集合添加元素,删除元素

>>> s = set("a")
>>> s.update("b")           #添加元素
>>> print(s)
{b, a}
>>> s.add("c")               #添加元素
>>> print(s)
{b, a, c}
>>> s.remove("a")         #删除元素
>>> print(s)
{b, c}
>>>

清空集合元素及删除集合

>>> s.clear()
>>> print(s)
set()
>>> del s                
>>> print(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name s is not defined

下面重温一下并集,交集,差集的概念

技术分享

差集,difference()  返回一个新集合

>>> s1 = set("abcdefg")
>>> s2 = set("efghijk")
>>> s1.difference(s2)            #s1与s2的差集
{b, a, d, c}
>>> s2.difference(s1)            #s2与s1的差集
{j, h, i, k}

交集,&  或 intersection() 返回一个新集合

>>> s1&s2
{g, f, e}
>>> s3 = s1&s2
>>> print(s3)
{g, f, e}
>>> s4 = s1.intersection(s2)
>>> print(s4)
{g, f, e}
>>>

并集, | 或 union()  返回一个新集合

>>> s3 = s1|s2
>>> print(s3)
{h, a, d, e, i, k, g, b, j, f, c}
>>> s4 = s1.union(s2)
>>> print(s4)
{h, a, d, e, i, k, g, b, j, f, c}

集合是不能相加,但可以相减

>>> s1-s2
{b, a, d, c}
>>> s3 = s1+s2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: set and set

集合之间的and , or

>>> s1 = set("abc")
>>> s2 = set("cde")
>>> s1 and s2           #取s2
{c, d, e}
>>> s1 or s2             #取s1
{b, a, c}

difference_update()    传什么进来就删除什么

>>> s1 = set("abcdefg")
>>> s1.difference_update("a")
>>> print(s1)
{d, e, g, b, f, c}

intersection_update()    还是看例子吧,好理解

>>> s1 = set("abcdefg")
>>> s2 = set("efghij")
>>> s1.intersection_update(s2)          #在s1中只保留s1和s2中都有的元素
>>> print(s1)
{g, f, e}

pop()    在集合中随机删除一个元素并返回该元素,此方法不能带参数

>>> s1.pop("a")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop() takes no arguments (1 given)
>>> s1.pop()
a
>>> s1.pop()
d

s1.symmetric_difference(s2)    #取出两边的差集

>>> s1 = set("abcdefg")
>>> s2 = set("efghij")
>>> s1.symmetric_difference(s2)
{j, h, b, a, d, c, i}

最觉的应用,便是去除重复的元素

>>> li = [1,1,2,2,3,3,4,4,5,5,6,6]
>>> print(set(li))
{1, 2, 3, 4, 5, 6}

python(3)-集合

原文:http://www.cnblogs.com/huangxm/p/5215418.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!