集合

1、什么是集合

set(集合)是一个无序不重复元素的数据集,与列表的区别
1、无序的,不可以使用索引进行顺序的访问
2、不能够有重复的数据。

项目开发中,集合主要用在数据元素的去重和测试是否存在。
集合还支持一些数学上的运算,例如:intersection(交集),union(并集),difference(差集)和 symmetric_difference(对称差集)。

2、创建集合

创建集合的方法比较简单,使用大括号或者 set 函数,需要注意空的集合不能够使用 {} 创建,只能使用 set 函数,因为{} 创建的是一个空的字典 :
courses = set() #创建一个空集合
courses = {'Linux', 'C++', 'Vim', 'Linux'}
print(courses)
{'Linux', 'Vim', 'C++'}
上面的代码示例中可以看到,多余的 Linux 字符串已经被自动去除。

集合还可以直接由字符串与 set 函数进行创建,会将字符串拆散为不同的字符,并去除重复的字符:
与大括号的效果不同,大括号不会将字符串拆散
str = {'hello'}
print(str)
结果为{'hello'}

str = set('hello')
print(str)
结果为{'h', 'l', 'o', 'e'}

3、集合操作

3.1 add()向集合中增加元素且只能一次添加一个元素,如果元素已经存在则不进行操作
a = {1,2,3,4}
a.add('hello')
print(a)
{1, 2, 3, 4, 'hello'}

3.2 update()也可以添加元素,且参数可以是列表,元组,字典等
a = {1,2,3,4}
a.update('a','b',[10,11,'c','d'])
print(a)
{1, 2, 3, 4, 'a', 'd', 10, 11, 'c', 'b'}

3.3 remove() 从集合中删除元素,如果元素不存在则抛出 KeyError 异常:
a = {1,2,3,4}
a.remove(1)
print(a)
{2, 3, 4}

3.4 discard()移除集合中的元素,且如果元素不存在,不会发生错误。
a = {1,2,3,4}
a.discard(10)
print(a)
{1,2, 3, 4}

3.5 pop()随机删除集合中的一个元素,语法格式如下:
a = {1,2,3,4}
a.pop()
print(a)
{2, 3, 4}

3.6 len()计算集合元素个数
print(len(a))
4

3.7 clear()清空集合
a = {1,2,3,4}
print(a.clear())
None

3.8 copy()拷贝集合
a = {1,2,3,4}
b = a.copy()
print(b)
{1, 2, 3, 4}

3.9 isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
a = {1,2,3,4}
b = {3,4,5,6}
print(a.isdisjoint(b))
False

3.10 issubset() 判断a集合是否为b集合的子集。
a = {1,2,3,4}
b = {3,4,5,6}
print(a.issubset(b))
False

3.11 issuperset() 判断a集合是否是b集合的父集
a = {1,2,3,4}
b = {3,4,5,6}
print(a.issuperset(b))
False

3.12 in判断是否存在
a = {1,2,3,4}
print(1 in a)
True
print('1' not in a)
True
注意 not in 是一个判断 Python 是否不在集合中的操作。in 操作也适用于列表和元组。

4、两个集合的运算

a = {1,2,3,4}
b = {3,4,5,6}

4.1、& 交集,返回既在a又在b的元素,等效于intersection操作:
print(a & b)
print(a.intersection(b))
{3, 4}
a.intersection_update(b) #相当于a = a.intersection(b),将a与b的交集赋值给a
print(a,b)
{3, 4} {3, 4, 5, 6}

4.2、'|' 并集,存在a中或b中的元素,等效于 union 操作:
print(a | b)
print(a.union(b))
{1, 2, 3, 4, 5, 6}
并没有a.union_update(b)这个方法

4.3、- 差集,返回在a不在b的元素,等效于difference操作:
print(a - b)
print(a.difference(b))
{1, 2}
a.difference_update(b) #相当于a = a.difference(b),将a与b的差集赋值给a
print(a,b)
{1, 2} {3, 4, 5, 6}

4.4、^ 对称差集,返回只存在a或b集合中的元素,等效于symmertic_difference操作:
print(a ^ b)
print(a.symmetric_difference(b))
{1, 2, 5, 6}
a.symmetric_difference_update(b) #相当于a = a.symmetric_difference(b),将a与b的对称差集赋值给a
print(a,b)
{1, 2, 5, 6} {3, 4, 5, 6}

5、set不能创建数字集合,要创建数字集合只能用大括号

c = {1234,5678}
print(c)
{1234, 5678} 大括号是将每个数字当成一个元素

d = set(5678)
print(d)
TypeError: 'int' object is not iterable

e = set('1234')
print(e)
{'1', '4', '3', '2'} set将元素拆分

也不能写成
f = set('1234','5678')
print(f)
TypeError: set expected at most 1 arguments, got 2

day12-集合的更多相关文章

  1. python基础学习Day12 生成器、列表推导式、字典的表达式、字典键值对的互换、集合推导式

    一.生成器 1.1 生成器:就是(python)自己用代码写的迭代器,生成器的本质就是迭代器. 1.2 生成器函数 def func1(x): x += print() yield x print() ...

  2. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  3. Alpha冲刺集合

    Alpha冲刺集合 Day1 http://www.cnblogs.com/bugLoser/p/7901016.html Day2 http://www.cnblogs.com/bugLoser/p ...

  4. day12 EL 表达式和国际化开发

    day12 EL 表达式和国际化开发 1. EL(Expression Language) 表达式简介 1.1 执行运算 1.2 获取web开发常用对象(el 中定义了11个隐式对象) 1.3 使用 ...

  5. python学习博客地址集合。。。

    python学习博客地址集合...   老师讲课博客目录 http://www.bootcdn.cn/bootstrap/  bootstrap cdn在线地址 http://www.cnblogs. ...

  6. python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例

    可变不可变: 1.可变:列表.字典.例如列表类型是可变的,我修改了列表中的元素的值,但是列表本身在内存中的地址是没有变化的,所以列表的元素是可以被改变的 >>> name=[&quo ...

  7. day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

    day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...

  8. day12——生成器、推导式、简单内置函数

    day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将 ...

  9. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  10. .Net多线程编程—并发集合

    并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组都不是线程安全 ...

随机推荐

  1. ubuntu16.04下sublime text 3之安装和配置

    1.安装方法 1)使用ppa安装 sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo apt ...

  2. [转][JS]修改链接中的参数

    转自:https://blog.csdn.net/weixin_40845192/article/details/81561644 /** * url地址修改 * @param url 待修改url ...

  3. openstack处理booting from hard disk

    当你的实例启动出现如下报错的处理方式:         需要编辑/etc/nova/nova.conf [libvirt] cpu_mode = none virt_type=qemu   修改后需要 ...

  4. [UE4]游戏中服务器切换地图,控制台命令Execute console Command

    Execute console Command ServerTravel {地图名称}?listen 在服务器执行了这个命令,所有连接到该服务器的客户端都会跟着服务器同时切换到指定的地图. 1.创建一 ...

  5. Android通过包名启动其他应用,若该应用已启动,则直接将应用切到前台

    CommUtil.startActivityForPackage(mContext, "com.autonavi.minimap");//打开高德 CommUtil.java /* ...

  6. Abp.Linq.Extensions扩展(1)--static class QueryableExtensions

    // 摘要:        //     Used for paging with an Abp.Application.Services.Dto.IPagedResultRequest object ...

  7. Kaptcha

    Kaptcha:google自动生成验证码组件 kaptcha的使用比较方便,只需添加jar包依赖之后简单地配置就可以使用了 kaptcha所有配置都可以通过web.xml来完成,如果你的项目中使用了 ...

  8. Google App Engine10年,支持更多你喜欢的编程语言

    2008年4月7日google推出Google App Engine(GAE),时间过得真快,10年过去了,2010年3月google退出中国,一转眼也过去7年了.早在2009年的时候GAE就在中国内 ...

  9. 使用Excel随机函数产生大众评委的6位登录密码

    第一步:填写公式 如下图所示:选中B2单元格输入公式   =TEXT(ROUNDUP(RAND()*1000000,0),"000000") ,然后回车. 可复制的纯文本格式: = ...

  10. python基础知识-(1)语法基础知识总结(转载)

    1.Python标识符 在 Python 里,标识符有字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中的标识符是区分大 ...