Python3学习笔记(八):集合
集合(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学习笔记(八):集合的更多相关文章
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- Go语言学习笔记八: 数组
Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...
随机推荐
- eclipse中svn的使用
1.在eclipse中添加SVN插件或者说直接利用eclipse软件中的help-install项进行网站在线下载也可 2.安装好SVN之后, 2.1.从SVN检出项目到本地 右击鼠标-选import ...
- python爬取天气后报网
前言 大二下学期的大数据技术导论课上由于需要获取数据进行分析,我决定学习python爬虫来获取数据.由于对于数据需求量相对较大,我最终选择爬取 天气后报网,该网站可以查询到全国各地多年的数据,而且相对 ...
- linux命令之import
linux下截屏除了printscreen按键外,还可以用improt命令. 该命令最常用的两种方式: 1.鼠标选择范围截屏:import mypicture.jpg 2.截取全屏:import -w ...
- laravel的monolog使用
Laravel 集成了 Monolog 日志函数库,Monolog 支持和提供多种强大的日志处理功能. 1.设置,日志模式 (1)Laravel 提供可立即使用的 single.daily.syslo ...
- 带EFI支持的GRUB2安装全记录
版权归作者所有,任何形式转载请联系作者. 作者:keenshoes(来自豆瓣) 来源:https://www.douban.com/note/210077866/ 关键词:EFIGRUB2efibo ...
- filebeat开启自带模块收集日志如何辨别日志来源等
filebeat启动自带模块后,日志先输出到Redis中 比如开启了system模块日志和redis模块日志 在Redis中查看收集过来的日志时,可以看到如下的这些信息 system日志信息 { &q ...
- JQuery高级笔记
## 今日内容: 1. JQuery 高级 1. 动画 2. 遍历 3. 事件绑定 4. 案例 5. 插件 ## ...
- 72. Edit Distance (JAVA)
Given two words word1 and word2, find the minimum number of operations required to convert word1 to ...
- SQLite3中自增主键相关知识总结,清零的方法、INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
这篇文章主要介绍了SQLite3中自增主键相关知识总结,清零的方法.INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用等,需要的朋友可以参考下 一.SQLite清空表 ...
- 4、MySQL 申明变量给查询数据编号
摘自: https://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html https://blog.csdn.net/arbben/ar ...