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篇】:集合的定义和基本方法的更多相关文章

  1. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

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

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

  3. python学习6—数据类型之集合与字符串格式化

    python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...

  4. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  5. Python学习笔记进阶篇——总览

    Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...

  6. Python学习笔记——基础篇【第六周】——面向对象

    Python之路,Day6 - 面向对象学习 本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.       同时可参考链接: http:// ...

  7. Python 学习笔记---基础篇

    1. 简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200 import subprocess cmd="cmd.exe" b ...

  8. Python学习笔记——基础篇【第七周】———类的静态方法 类方法及属性

    新式类和经典类的区别 python2.7 新式类——广度优先 经典类——深度优先 python3.0 新式类——广度优先 经典类——广度优先 广度优先才是正常的思维,所以python 3.0中已经修复 ...

  9. 《转》python学习(10)-集合

    转自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除 ...

  10. Python学习系列提升篇------字符串

    字符串是python学习中重要的内容,在以后的工作中,对字符串的处理也必少不了.下面总结一下关于字符串学习的经验. 1.1 字符串的连接和合并 用‘ + ’连接,将两个字符串相加.       合并, ...

随机推荐

  1. Java安全之Weblogic 2016-0638分析

    Java安全之Weblogic 2016-0638分析 文章首发先知:Java安全之Weblogic 2016-0638分析 0x00 前言 续上篇文的初探weblogic的T3协议漏洞,再谈CVE- ...

  2. 解决Idea中没有SVN标识,不能提交、更新代码

    使用idea也不久,今天从svn上down下来的项目导入idea,发现写的代码不能在idea里面更新,记录下解决方案. 步骤 1.点击VCS,然后Enable Version Control Inte ...

  3. [leetcode]75.Sort Color三指针

    import java.util.Arrays; /** * Given an array with n objects colored red,white or blue, * sort them ...

  4. JavaDailyReports10_19

    今日学习超链接 1.文本链接 使用一对<a>标签 格式:< href ="目标URL" target="目标窗口"> 指针文本    & ...

  5. 使用pdf.js aspose各种文档转PDF 版本对应license.xml 去水印破解

    在使用pdf.js途中,使用aspose转换的文件一直有水印,在网上找了许多破解办法都是已经失效的,于是乎,就查看了一下jar的源码,找到了版本对应的破解字符(如下):对应版本为 aspose-wor ...

  6. cmake - 编译

    cmake在编译期间会使用到的命令总结: 1.指定编译器并同时设置编译选项 set(CMAKE_CXX_COMPILER "clang++" ) # 显示指定使用的C++编译器 s ...

  7. 第三章 存储器的扩展(二)——> 重要

    3.2 主存储器 四.只读存储器(ROM)---->了解(考试也可能会考) 掩膜ROM(MROM) 行列选择线交叉处有 MOS 管为"1" 行列选择线交叉处无 MOS 管为& ...

  8. react项目中实现搜索关键字呈现高亮状态(一)

    最近有个需求,在一个react项目中,实现搜索关键字呈现高亮状态.这个在普通的html文件中还好操作些,在react项目中有点懵逼了,因为react项目中很少操作dom,有点无从下手.但最后还是实现了 ...

  9. Linux下的strip命令学习

    strip strip是Linux下的一个命令.可以用于给应用脱衣服,帮助我们抹除一些调试信息.(虽然不知道具体是什么,但是会用就好了) 在嵌入式开发领域用到的应该比较多 首先,先写一个示例看看 // ...

  10. LeetCode557 反转字符串中的单词 III

    给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode contest" 输出: &q ...