数据结构-集合

一、 目录

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]

时间: 2024-10-13 22:51:48

数据结构-集合的相关文章

第二十七篇 玩转数据结构——集合(Set)与映射(Map)

1.. 集合的应用 集合可以用来去重 集合可以用于进行客户的统计 集合可以用于文本词汇量的统计 2.. 集合的实现 定义集合的接口 Set<E> ·void add(E) // 不能添加重复元素 ·void remove(E) ·boolean contains(E) ·int getSize() ·boolean isEmpty() 集合接口的业务逻辑如下: public interface Set<E> { void add(E e); void remove(E e); bo

python 数据结构-集合set

原文地址:http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 集合是一个无序不重复元素的集. 基本功能包括关系测试和消除重复元素.集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算. 大括号或 set() 函数可以用来创建集合. 注意:想要创建空集合,你必须使用 set() 而不是 {}.后

数据结构 集合_集合(数学)抽象数据类型的C语言实现

链表是实现集合的一种理想的方式.将List以typedef的方式重命名为Set.这样做能保留链表简洁的特性,还能使集合具有了一些多态的特性. 使用这种方法的最大好处就是可以使用list_next来遍历一个集合,使用list_rem_next来移除一个成员,而不用根据成员所存储的数据来标识它. 我们先来查看一下集合抽象数据类型头文件的内容: 示例1:集合(抽象数据类型)头文件 #ifndef SET_H #define SET_H #include <stdlib.h> #include &qu

数据结构(集合)学习之Queue

集合 框架关系图: Collection接口下面有三个子接口:List.Set.Queue.此篇是关于Queue<E>的简单学习总结. Queue: Queue(队列):是一种特殊的链型结构,它的特点是先进先出(FIFO),通常只在尾部插入,头部删除,它经常和Stack(栈)进行比较,但Stack的特点是先进后出.注意:队列通常但不一定是以FIFO(先进先出)方式排序元素. 除了优先级队列之外,优先级队列是根据提供的比较器对元素进行排序,还是元素的自然排序,以及对元素LIFO(先进先出)进行排

Vector——Java数据结构----集合

Vector Vector与数组相比,Vector对象可以很好的实现元素的插入和删除,也拥有动态增长特性 1.构造函数(4) Vector() Vector(<E> c)使用泛型(generic type)确定容纳对象的类型 Vector(int initialCapacity,int capacityIncrement) 能为初始化的Vector对象分配长度为initialCapacity的容量,可以在必要的时候以capacityIncrement的速度自增长其容量空间 Vector(int

数据结构——集合有关

栈(stack):先进后出: 队列(queue):先进先出: 数组(Array):有序的元素序列:查询快(数组的地址是连续的),增删慢: 链表(linked list):由一系列结点node(链表中的每一个元素称为结点)组成, 二叉树——红黑树: 原文地址:https://www.cnblogs.com/wmqiang/p/10659465.html

java数据结构--集合Set

原文地址:https://www.cnblogs.com/wqbin/p/11192280.html

数据结构基本概念和术语

基本概念和术语 2016年11月22日 9:24 数据是对客观事务的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称. 数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理.一个数据元素可以由若干数据项组成,数据项是数据的不可分割的最小单位.(Example:一本书的书目信息为一个数据元素,而书目信息中的每一项(如书名作者)为一个数据项) 数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集.

20172310 2017-2018-2 《程序设计与数据结构》第十周学习总结

20172310 2017-2018-2 <程序设计与数据结构>第十周学习总结 教材学习内容总结 本周学习的是第十三章 集合与数据结构 集合是一种对象,类似于保存其他对象的存储库.我们常用集合表示一个专用于保存元素的对象,并且该对象还提供增添,删除等管理 所保存元素的服务. 集合是同构的,意味着这种集合保存类型全部相同的对象;另一些集合则是异构的,即这种集合可以保存各种类型的 对象. 分离接口与实现: 1.一个抽象数据类型(ADT)是由数据和在该数据上所实施的具体操作构成的集合.一个ADT有名