码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构-集合

时间:2017-09-15 02:01:16      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:inter   微软雅黑   基本   rand   数据类型   file   相关   字符   成员   

一、 目录

1、集合概述

2、集合相关操作

3、集合类型操作符

4、集合列表元组之间转换

二、集合概述

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

集合元素(set elements):组成集合的成员

1 >>> li=[‘a‘,‘b‘,‘c‘,‘a‘]

2 >>> se =set(li)

3 >>> se

4 set([‘a‘, ‘c‘, ‘b‘])

 

三、集合的相关操作

1、创建集合

由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建

 

>>> s = set(‘beginman‘)

>>> s

set([‘a‘, ‘b‘, ‘e‘, ‘g‘, ‘i‘, ‘m‘, ‘n‘])

 

2、访问集合

由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

 

>>> ‘a‘ in s

True

>>> ‘z‘ in s

False

>>> for i in s:

    print i

 

    

a

h

m

o

n

p

t

y

>>>

 

3、更新集合

可使用以下内建方法来更新:

s.add()
s.update()
s.remove()

 

 四、集合类型操作符

 

1、in ,not in
2、集合等价与不等价(==, !=)
3、子集

>>> set(‘shop‘)<set(‘cheeshop‘)

True

>>> set(‘bookshop‘)>=set(‘shop‘)

True

4、联合(|)

联合(union)操作与集合的OR操作其实等价的,联合符号有个等价的方法,union()。

>>> s1=set(‘begin‘)

>>> s2=set(‘man‘)

>>> s3=s1|s2

>>> s3

set([‘a‘, ‘b‘, ‘e‘, ‘g‘, ‘i‘, ‘m‘, ‘n‘])

>>> s1.union(s2)

set([‘a‘, ‘b‘, ‘e‘, ‘g‘, ‘i‘, ‘m‘, ‘n‘])

+ 运算则不适合:

 

>>> s3New = s1+s2

 

Traceback (most recent call last):

  File "<pyshell#68>", line 1, in <module>

    s3New = s1+s2

TypeError: unsupported operand type(s) for +: ‘set‘ and ‘set‘

 

5、交集(&)

与集合AND等价,交集符号的等价方法是intersection()

>>> s1&s2

set([‘n‘])

>>> s1.intersection(s2)

set([‘n‘])

6、查补(-)
等价方法是difference()

>>> s1-s2

set([‘i‘, ‘b‘, ‘e‘, ‘g‘])

>>> s1.difference(s2)

set([‘i‘, ‘b‘, ‘e‘, ‘g‘])

7、对称差分(^)

对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()

>>> s1^s2

set([‘a‘, ‘b‘, ‘e‘, ‘g‘, ‘i‘, ‘m‘])

>>> s1.symmetric_difference(s2)

set([‘a‘, ‘b‘, ‘e‘, ‘g‘, ‘i‘, ‘m‘])

注意:集合之间and,or

>>> s1 and s2

set([‘a‘, ‘m‘, ‘n‘])   #取 s2

>>> s1 or s2

set([‘i‘, ‘b‘, ‘e‘, ‘g‘, ‘n‘]) #取 s1

>>>

五、集合、列表、元组、字符串之间转换

 

>>> list(s1)

[‘i‘, ‘b‘, ‘e‘, ‘g‘, ‘n‘]

>>> str(s1)

"set([‘i‘, ‘b‘, ‘e‘, ‘g‘, ‘n‘])"

>>> tuple(s1)

(‘i‘, ‘b‘, ‘e‘, ‘g‘, ‘n‘)

 

应用:

‘‘‘最简单的去重方式‘‘‘

lis = [1,2,3,4,1,2,3,4]

print list(set(lis))    #[1, 2, 3, 4]

数据结构-集合

标签:inter   微软雅黑   基本   rand   数据类型   file   相关   字符   成员   

原文地址:http://www.cnblogs.com/liang545621/p/7523553.html

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