集合(set)是一种可变的无序的不重复的数据类型

要创建集合,需要将所有项(元素)放在花括号({})内,以逗号(,)分隔。

>>> s = {'p','y','t','h','o','n'}

集合中的元素必须是不可变的数据类型(数字,元组,字符串),不能是可变的数据类型(列表,字典,set集合)

>>> s = {1,2,3}
>>> s = {1,'python',(1,2,3)} # 元素可以为数字,字符串,元组
>>> s = {1,2,[3,4]} # 元素不能为列表
Traceback (most recent call last):
File "<pyshell#208>", line 1, in <module>
s = {1,2,[3,4]}
TypeError: unhashable type: 'list'
>>> s = {1,2,{'a':3,'b':4}} # 元素不能为字典
Traceback (most recent call last):
File "<pyshell#209>", line 1, in <module>
s = {1,2,{'a':3,'b':4}}
TypeError: unhashable type: 'dict'

set()函数

用于把其他序列(字符串,列表,元组,字典)创建为集合

>>> set('python')        # 把字符串转变为集合
{'o', 'h', 'p', 'n', 't', 'y'}
>>> set([1,2,3,4,5]) # 把列表转变为集合
{1, 2, 3, 4, 5}
>>> set((1,2,3,4,5)) # 把元组转变为集合
{1, 2, 3, 4, 5}
>>> set({'a':3,'b':4}) # 把字典键值转变为集合
{'b', 'a'}
>>> set() # 创建一个空集合
set()

集合特性

  • 无序性:元素之间是无序的,所以不支持索引。
  • 互异性:集合中每个元素都是不同的。
  • 确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。
# 无序性
>>> s = set('python')
>>> s
{'o', 'h', 'p', 'n', 't', 'y'}
# 不支持索引
>>> s[2]
Traceback (most recent call last):
File "<pyshell#231>", line 1, in <module>
s[2]
TypeError: 'set' object does not support indexing
# 互异性
>>> s = set('Hello')
>>> s
{'e', 'H', 'o', 'l'}
# 确定性
>>> 'l' in s
True
>>> 'p' in s
False

集合运算


集合之间可以进行并集、交集、差集运算

1、并集

一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

>>> a = set('abcd')
>>> b = set('cdef')
>>> a | b
{'d', 'e', 'b', 'c', 'f', 'a'}
>>> a.union(b)
{'d', 'e', 'b', 'c', 'f', 'a'}

2、交集

两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成

>>> a = set('abcd')
>>> b = set('cdef')
>>> a & b
{'d', 'c'}
>>> a.intersection(b)
{'d', 'c'}

3、差集

A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

>>> a = set('abcd')
>>> b = set('cdef')
>>> a - b
{'a', 'b'}
>>> a.difference(b)
{'a', 'b'}

Python3学习笔记(八):集合的更多相关文章

  1. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  2. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  3. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  4. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  5. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  6. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  7. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  8. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  9. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  10. Go语言学习笔记八: 数组

    Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...

随机推荐

  1. java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

    PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了.通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理.可以 ...

  2. 前端页面适配的rem换算 为什么要使用rem

    之前有些适配做法,是通过js动态计算viewport的缩放值(initial-scale). 例如以屏幕320像素为基准,设置1,那屏幕375像素就是375/320=1.18以此类推. 但直接这样强制 ...

  3. [转载]Linux查看文件编码格式及文件编码转换

    原文地址:https://blog.csdn.net/gatieme/article/details/55045883 3 linux下查看编码的方法 方法一:file filename file c ...

  4. 编写python爬虫采集彩票网站数据,将数据写入mongodb数据库

    1.准备工作: 1.1安装requests: cmd >> pip install requests 1.2 安装lxml: cmd >>  pip install lxml ...

  5. 官宣!VS Code Python 全新功能在 PyCon China 全球首发!

    北京时间 2019 年 9 月 21 日,PyCon China 2019 在上海举行. 在下午的演讲中,来自微软开发工具事业部的资深研发工程师 在演讲中,我们看到了 Azure Notebook 与 ...

  6. java获取json数组格式中的值

    第一种方法: String str = "{'array':[{'id':5,'name':'张三'},{'id':6,'name':'李四'}]}"; JSONArray jso ...

  7. hostid - 显示当前主机的数字化标识

    SYNOPSIS(总览) hostid [-v] DESCRIPTION(描述) 显示当前主机的数字化标识(以十六进制的形式表示). --help 显示帮助信息后退出 --version 输出版本信息 ...

  8. linux误卸载openssl后的恢复

    一.原因 由于在编译mysql时,报ssl错误,于是想卸载openssl再重新安装 rpm -qa|grep openssl rpm -e openssl-.el7_6..x86_64 rpm -e ...

  9. dedecms织梦调用二级和三级分类标签

    dedecms调用二级.三级以及调用栏目所有子栏目 <!--频道分类具体内容开始--> <div class="channel_sort"> {dede:c ...

  10. libpng Cximage图片处理

    跨平台 开源 png图片处理 https://www.cnblogs.com/lidabo/p/6923426.html Cximage BIPro