Python学习【第6篇】:集合的定义和基本方法
1.概念
(1)不同元素组成
例:
s = {1,2,3,4,4,4,4,4,4}
print(s)
运行结果:
{1, 2, 3, 4}
因为是不同元素组成,因此去重了
(2)无序
例:
s = {"xiao","xing","ceshi","admin"}
print(s)
运行结果每次显示的顺序不一样,代表是无序的
(3)集合元素必须是不可变类型
例:
s = {[123,456],789}
print(s)
运行结果:
TypeError: unhashable type: 'list'
因为列表是可变,所以会报错
2.集合的方法
1.add 添加
s = {123,456,789}
s.add(2)
print(s)
运行结果:
{456, 2, 123, 789}
2.clear 清空
s = {123,456,789}
s.clear()
print(s)
运行结果:
set()
3.copy 复制
s = {123,456,789}
s1 = s.copy()
print(s1)
运行结果:
{123,456,789}
4.pop 删除(无序删除,随机删除,不可指定删除)
s = {123,456,789}
s.pop()
print(s)
运行结果:
{123, 789}
5.remove 删除(可指定删除,元素不存在时会报错)
s = {123,456,789}
s.remove(789)
print(s)
运行结果:
{456, 123}
6.discard 删除(可指定删除,元素不存在时不会报错)
3.集合的关系运算,交,差并集操作
(1)求交集(需求在列表中找出既学python又学linux的人)
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing"]
python_and_linux =[]
for p_name in python_1:
if p_name in linux_1:
python_and_linux.append(p_name)
print(python_and_linux)
运行结果:
['xing', 'ly']
学过集合后的操作
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing"]
p_s =set(python_1)
#set函数相当于,for循环遍历python_1这个列表,然后把列表中的元素依次放到集合当中,如果是重复就去除,最终生成p_s集合是无序的
l_s = set(linux_1)
print(p_s,l_s)
print(p_s.intersection(l_s))
print(p_s&l_s)
运行结果:
{'xing', 'xiao', 'ly'} {'xing', 'ly'}
{'xing', 'ly'}
{'xing', 'ly'}
(2)求并集
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
print(p_s.union(l_s))
或者
print(p_s|l_s)
运行结果:
{'zx', 'ly', 'xing', 'xiao'}
(3)求差集
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
print(p_s.difference(l_s))
或者
print('差集',p_s-l_s)
运行结果:
{'xiao'}
差集 {'xiao'}
(4)求交叉补集
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
print(p_s.symmetric_difference(l_s))
运行结果:
{'xiao', 'zx'}
(5)求完叉集再赋值给原来的值
difference_update
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
p_s =set(python_1)
l_s = set(linux_1)
#p_s = p_s - l_s
#print(p_s)
p_s.difference_update(l_s)
print(p_s)
运行结果:
{'xiao'}
difference_update先求差集,再将差集赋值给p_s
(6)判断两个集合是否有交集,无则返回true
s = {1,2,3}
s1 = {4,5}
print(s.isdisjoint(s1))
运行结果:
True
(7)判断是否为其子集
s1 = {1,2}
s2 = {1,2,3}
print(s1.issubset(s2))
运行结果:
true
(8)判断是否为其父集
s1 = {1,2}
s2 = {1,2,3}
print(s2.issuperset(s1))
运行结果:
true
(9)更新多个值
s1 = {1,2}
s2 = {1,2,3}
s1.update(s2)
print(s1)
运行结果:
{1, 2, 3}
(10)定义不可变集合
s = frozenset('hello')
print(s)
运行结果:
frozenset({'h', 'o', 'e', 'l'})
再s.的时候发现无法添加,修改,删除操作
(4)求完叉集再赋值给原来的值
Python学习【第6篇】:集合的定义和基本方法的更多相关文章
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- python学习博客地址集合。。。
python学习博客地址集合... 老师讲课博客目录 http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
- python学习6—数据类型之集合与字符串格式化
python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...
- Python 学习 第十篇 CMDB用户权限管理
Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...
- Python学习笔记进阶篇——总览
Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...
- Python学习笔记——基础篇【第六周】——面向对象
Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 同时可参考链接: http:// ...
- Python 学习笔记---基础篇
1. 简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200 import subprocess cmd="cmd.exe" b ...
- Python学习笔记——基础篇【第七周】———类的静态方法 类方法及属性
新式类和经典类的区别 python2.7 新式类——广度优先 经典类——深度优先 python3.0 新式类——广度优先 经典类——广度优先 广度优先才是正常的思维,所以python 3.0中已经修复 ...
- 《转》python学习(10)-集合
转自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除 ...
- Python学习系列提升篇------字符串
字符串是python学习中重要的内容,在以后的工作中,对字符串的处理也必少不了.下面总结一下关于字符串学习的经验. 1.1 字符串的连接和合并 用‘ + ’连接,将两个字符串相加. 合并, ...
随机推荐
- junit 测试用例多并发
最近再用测试用例写个多并发,但是测试用例一运行完程序就结束啦.还没有等到多线程运行完.这个时候可以用断点在多线程后面停住或者让主线程睡眠多一些
- device_create为何可以在/sys/class/具体类/属性文件?怎么实现的
答案: 版本3.6.9: device_create -> device_register -> device_add -> device_add_attrs -> devic ...
- CI持续集成理论知识
(1)什么是CI What is CI? CI就是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过 ...
- STM32串口中断的一些资料
在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里.以供自己查阅,以及方便其他人. TC ====TXE 顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理 ...
- 整数划分(硬币问题)(dp)
题目描述 考试时思路 本菜狗考试的时候,第一扁打了纯dfs,15分拿了9分 后面看了时限400ms,多组数据,以为会卡常数,然后就想着先dp打表然后再直接O(1)查询 后面发现自己想多了,数据有点水- ...
- Ubuntu和UOS+mips64l龙芯处理器安装编译Openssl
1.下载openssl开发包文件,我这里下载的是openssl-1.1.1f.tar.gz:并放在/data/home/dengchaoqun/openssl1.1.1目录下 2.终端切换到当前目录下 ...
- 对HTTP请求接口资源下载时间过长的问题分析
问题描述 我司某产品线有指定业务接口customQuery在线上环境中,与首页一起打开时下载数据的时间明显过长(平均可以达到2s) 注: "与首页一起打开" 的含义是指用户进入WE ...
- [Skill]加速npm与yarn还原
npm源 使用cnpm alias cnpm="npm --registry=https://registry.npm.taobao.org //或者 npm install -g cnpm ...
- 关于.NET中的控制反转(三)- 依赖注入之 Autofac
一.Autofac简介 Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.Autofac的主要特性如下: 组件侵入性为零 ...
- 【详细】Python基础(一)
@ 目录 前言 1. Python环境的搭建 1.1 python解释器的安装 1.2 pycharm的安装 2. Python基础语法 2.1 基本语法 2.2 数据类型 2.3 标识符与关键字 2 ...