day12-集合
集合
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-集合的更多相关文章
- python基础学习Day12 生成器、列表推导式、字典的表达式、字典键值对的互换、集合推导式
一.生成器 1.1 生成器:就是(python)自己用代码写的迭代器,生成器的本质就是迭代器. 1.2 生成器函数 def func1(x): x += print() yield x print() ...
- 【JAVA零基础入门系列】Day12 Java类的简单应用
俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...
- Alpha冲刺集合
Alpha冲刺集合 Day1 http://www.cnblogs.com/bugLoser/p/7901016.html Day2 http://www.cnblogs.com/bugLoser/p ...
- day12 EL 表达式和国际化开发
day12 EL 表达式和国际化开发 1. EL(Expression Language) 表达式简介 1.1 执行运算 1.2 获取web开发常用对象(el 中定义了11个隐式对象) 1.3 使用 ...
- python学习博客地址集合。。。
python学习博客地址集合... 老师讲课博客目录 http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
- python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例
可变不可变: 1.可变:列表.字典.例如列表类型是可变的,我修改了列表中的元素的值,但是列表本身在内存中的地址是没有变化的,所以列表的元素是可以被改变的 >>> name=[&quo ...
- day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)
day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...
- day12——生成器、推导式、简单内置函数
day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将 ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- .Net多线程编程—并发集合
并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组都不是线程安全 ...
随机推荐
- vo和pojo
pojo直接描述数据库中的表和字段,一一对应 vo的话,可以多添加些属性,比如code对应的name,或者标识符等等 查询列表的时候也可以直接用vo,但是修改或添加记录必须是pojo QueryVo ...
- Scala的内建控制结构
Scala中的内建控制机构仅有if.while.for.try.match和函数调用.虽然Scala的基础控制结构少,但也足以支持指令式语言里所有的实质内容.因为它们都能产生值,有助于缩短代码. 程序 ...
- MySQL 二进制文件恢复数据基础版本
先来一段 自行体会 #---------------------------------------------------------------------------------- #模拟通过b ...
- [UE4]InterpToMovement
InterpToMovement:可以让Actor在规定时间内,在多个点之间循环移动. Duration:规定时间
- Spring+MyBatis实现数据库读写分离方案
推荐第四种:https://github.com/shawntime/shawn-rwdb 方案1 通过MyBatis配置文件创建读写分离两个DataSource,每个SqlSessionFactor ...
- JDK8 Java 中遇到null 和为空的情况,使用Optional来解决。
空指针是我们最常见也最讨厌的异常,写过 Java 程序的同学,一般都遇到过 NullPointerException :) 初识null 详细可以参考[jdk 1.6 Java.lang.Null.P ...
- python类的全面介绍
转载:全面介绍python面向对象的编程——类的基础 转载:类的实例方法.静态方法.类方法的区别
- CRM stringmap
CREATE view [dbo].[V_stringmap] as SELECT DISTINCT Entity.Name as tablename,StringMap.AttributeName ...
- java下载excel,excel从数据库获取数据
<!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g ...
- maven入门安装及HelloWorld实现
一.安装maven 1.下载 https://maven.apache.org/download.cgi 官网进行下载 2.安装 2.1 解压 本人在D盘建立一个maven文件夹,然后 ...