python基础知识——内置数据结构(集合)

python中的set是指一系列无序元素的集合,其中的元素都是相异的,常见的操作包括集合的并集,交集和补集等操作。

1、set的创建

格式

set_name = {value1, value2, ...}

创建空的集合

set_name = set()

注意:在创建空的集合的时候不能使用

set_name = {}

这样创建出来的是字典。

例如

animals = {'cat', 'dog'}
animals_null = set()
print animals, animals_null

另外,可以将list转换成set类型

格式

set_name = set(list_name)

例如

animals = ['cat', 'dog']
animals_Set = set(animals)
print animals_Set

2、去除重复元素

set类型的数据结构中的元素是无序不重复的,可以利用这点,去除数据结构中相同的元素。

例如

animals = {'cat', 'dog', 'dog','pig'}
print animals

输出结果

set(['cat', 'dog', 'pig'])

3、并、交、补操作

对于set数据结构来说,最重要的就是并(|)、交(&)、补(-)的操作。

#coding:UTF-8
sA = {1, 2, 2, 2, 4, 5, 5}
sB = {4, 5, 6, 7}
#交集
print sA & sB#set([4, 5])
#并集
print sA | sB#set([1, 2, 4, 5, 6, 7])
#补集
print sA - sB#set([1, 2])

并交补的另类写法,并(union)、交(intersection)、补(difference)。

#coding:UTF-8
sA = {1, 2, 2, 2, 4, 5, 5}
sB = {4, 5, 6, 7}
#交集
print sA & sB#set([4, 5])
#并集
print sA | sB#set([1, 2, 4, 5, 6, 7])
#补集
print sA - sB#set([1, 2])

#并交补的另类写法
print sA.intersection(sB)#set([4, 5])
print sA.union(sB)#set([1, 2, 4, 5, 6, 7])
print sA.difference(sB)#set([1, 2])

另外在集合的操作中,判断集合的包含于子集。包含(>=或者issuperset),子集(<=或者issubset)。

#coding:UTF-8
sA = {1, 2, 2, 2, 4, 5, 5}
sB = {4, 5}
#判断sA是否包含sB
print sA.issuperset(sB)
print sA >= sB
#判断sB是否是sA的子集
print sB.issubset(sA)
print sB <= sA

4、其他的一些方法

增加单个元素(add),增加一组元素(update),判断指定的元素是否存在(in或者not in),删除指定的元素(remove),如果集合存在指定元素,则删除该元素(discard),集合的清空(clear)

#coding:UTF-8
sA = {1, 2, 2, 2, 4, 5, 5}
#添加单个元素
sA.add(6)#set([1, 2, 4, 5, 6])
print sA
#添加多个元素
sA.update([7,8,9,9,9])#set([1, 2, 4, 5, 6, 7, 8, 9])
print sA
#判断指定元素是否存在
print 5 in sA#True
print 10 not in sA#True
#删除指定元素
sA.remove(6)#set([1, 2, 4, 5, 7, 8, 9])
print sA
#如果集合存在指定元素,则删除该元素
sA.discard(9)#set([1, 2, 4, 5, 7, 8])
print sA
#集合的清空
sA.clear()#set([])
print sA

$(".MathJax").remove();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

Java之集合初探(一)

一、集合概述、区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器。 为什么出现集合类? 面向对象语言对事物的体现都...

2567
来自专栏Ryan Miao

java中List对象列表去重或取出以及排序

面试碰到几次list的去重和排序。下面介绍一种做法: 1. list去重 1.1 实体类Student List<Student>容量10k以上,要求去重复。这...

8079
来自专栏和蔼的张星的图像处理专栏

76. 最长上升子序列动态规划+二分查找

给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能...

6321
来自专栏深度学习与计算机视觉

算法-数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数,比如排序数组为{1,2,3,3,3,4,5},那么数字3出现的次数就是3。 解题思路: 1.首先,遍历数组肯...

2105
来自专栏向治洪

Koltin数据类之解构申明

所谓的解构声明就是将一个对象解构(destructure)为多个变量,也就是意味着一个解构声明会一次性创建多个变量.简单的来说,一个解构声明有两个动作: 声明了...

24310
来自专栏一个会写诗的程序员的博客

第7章 集合类第7章 集合类

在 Java 类库中有一套相当完整的容器集合类来持有对象。Kotlin没有去重复造轮子(Scala则是自己实现了一套集合类框架),而是在Java 类库的基础上进...

822
来自专栏Android先生

Kotlin的高阶函数和常用高阶函数

首先我们可以知道, forEach 是 Array 的扩展函数,然后参数是 action ,但是 action 不再像和我们以前Java那样传递的是一个对象,这...

1561
来自专栏lgp20151222

java中两个map比较

1312
来自专栏机器学习入门

LWC 58:726. Number of Atoms

LWC 58:726. Number of Atoms 传送门:726. Number of Atoms Problem: Given a chemical ...

2585
来自专栏老马说编程

(20) 为什么要有抽象类? / 计算机程序的思维逻辑

基本概念 上节提到了一个概念,抽象类,抽象类是什么呢?顾名思义,抽象类就是抽象的类,抽象是相对于具体而言的,一般而言,具体类有直接对应的对象,而抽象类没有,它...

2427

扫码关注云+社区

领取腾讯云代金券