数据结构-集合

一、 目录

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]

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