python学习之【第七篇】:Python中的集合及其所具有的方法
1.前言
python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重。
集合是无序的,集合中的元素必须是不可变类型。集合可以作为字典的key。
2.集合的定义
集合用一对花括号{}定义
set = {'dog','cat','pig','monkey'}
print(set)
# 输出
{'pig', 'cat', 'monkey', 'dog'}
3.集合的常见操作
- add(x)
往集合的尾部添加元素x
set = {'dog','cat','pig','monkey'}
set.add('china')
set.add('china')
print(set)
# 输出
{'cat', 'pig', 'china', 'monkey', 'dog'}
注意:集合内部不允许出现重复元素,如果有重复元素,集合会自动去重,所以当往集合的尾部添加两个相同元素时,只会保留一个。
- clear()
清空集合内的元素
set = {'dog','cat','pig','monkey'}
set.clear()
print(set)
# 输出
set()
- pop()
随机删除集合内的一个元素,并返回所删除的元素
set = {'dog','cat','pig','monkey'}
print(set.pop())
print(set)
# 输出
'pig'
{'cat', 'monkey', 'dog'}
- remove(x)
删除集合内的元素x,如果元素x不存在会报错
set = {'dog','cat','pig','monkey'}
set.remove('dog')
print(set)
set.remove('dog')
# 输出
{'pig', 'cat', 'monkey'}
报错,因为已经把元素'dog'从集合中删去了,再次删除'dog'时,由于集合中已经不存在该元素了,所以报错
- discard(x)
删除集合内的元素x,如果元素x不存在会返回None,不会报错
set = {'dog','cat','pig','monkey'}
set.discard('dog')
print(set)
print(set.discard('dog'))
# 输出
{'pig', 'cat', 'monkey'}
None
4.集合的关系运算
- 求交集s1 & s2
set1 = {'a','b','c','d'}
set2 = {'h','e','a','l','c'}
print(set1 & set2)
# 输出
{'c', 'a'}
- 求并集s1 | s2
set1 = {'a','b','c','d'}
set2 = {'h','e','a','l','c'}
print(set1 | set2)
# 输出
{'c', 'a', 'h', 'd', 'b', 'l', 'e'}
- 求差集s1 - s2
set1 = {'a','b','c','d'}
set2 = {'h','e','a','l','c'}
print(set1 - set2)
# 输出
{'b', 'd'}
5.利用集合对列表去重
利用集合内不允许出现重复元素这一天然特点,我们可以用来对列表去重
l1 = ['h','e','l','l','o']
#1.将列表转为集合,集合会自动去重
s1 = set(l1)
#2.将去重后的集合再转回列表
l1 = list(s1)
print(l1)
# 输出
['l', 'o', 'h', 'e']
想必细心的你已经看出来了,去重前后的列表中的元素顺序变了,由于集合是无序的,有序的列表转换成集合后变成了无序的,所以元素的顺序发生了变化,这并不是我们想要的,我们只想去掉列表中重复的元素而不想改变列表中元素的顺序,这也就是这种去重方法的缺点。
python学习之【第七篇】:Python中的集合及其所具有的方法的更多相关文章
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python学习【第七篇】基本数据类型
基本数据类型 数字 2是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子,E标记表示10的幂.在这里,52.3E-4表示52.3*10-4. (-5+4j)和(2 ...
- python学习【第七篇】python文件操作
一.文件操作过程 1. 打开文件,得到文件句柄并赋值给一个变量2. 通过句柄对文件进行操作3. 关闭文件 # 1.打开文件,得到文件句柄 f_handle = open('aa.txt', 'r', ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...
- Python 学习笔记(七)Python字符串(四)
输入输出 输入函数 raw_input (Python3:input) >>> raw_input("请输入一个字母") #获取输入内容的一个函数 请输入一个字母 ...
- Python 学习笔记(七)Python字符串(一)
字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符,用双引号或单引号包裹的为字符串 1 >>> "hello world" 2 'hello ...
- Python 学习笔记(七)Python字符串(三)
常用字符串方法 split() 分割字符串,指定分隔符对字符串进行分割 join() 将序列中的元素以指定的字符连接生成一个新的字符串 str.strip() 用于移除字符串头尾指定的字符(默认 ...
- Python 学习笔记(七)Python字符串(二)
索引和切片 索引 是从0开始计数:当索引值为负数时,表示从最后一个元素(从右到左)开始计数 切片 用于截取某个范围内的元素,通过:来指定起始区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右测 ...
- HIbernate学习笔记(七) hibernate中的集合映射和继承映射
九. 集合映射 1. Set 2. List a) @OrderBy 注意:List与Set注解是一样的,就是把Set更改为List就可以了 private List< ...
随机推荐
- day 20作业
目录 1.下面这段代码的输出结果将是什么?请解释. 2.多重继承的执行顺序,请解答以下输出结果是什么?并解释. 3.什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先? 4.用 ...
- B-概率论-极大似然估计
[TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ ...
- SQL SERVER数据库批量替换某个数据表里的数据update
批量替换:将A表CMC里面所有包含a替换成b而不影响其他内容UPDATE A SET CMC=REPLACE(CMC,'a','b')
- 机器学习:数据清洗及工具OpenRefine
数据分析中,首先要进行数据清洗,才可以继续训练模型,预测等操作. 首先介绍一下什么是数据清洗(定义来自 百度百科,有删减) 数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别 ...
- [NOIp2011] luogu P1311 选择客栈
我妈的抽象歌曲真 nb. 题目描述 给你 nnn 个点,每个点有两个参数 ci,dic_i,d_ici,di,给你一个数 DDD.定义一种方案合法,当且仅当你选出整数 i,j∈[1,n],i< ...
- c++11::initializer_list
#include <initializer_list> template <class T> class initializer_list; initializer_list对 ...
- windows 系统对应的内核版本和自带 iis 版本
Windows 10 10.0* Windows Server 2016 10.0* Windows 8.1 6.3* Windows Server 2012 R2 6.3* Windows 8 6. ...
- 02--Java Jshell的使用 最适合入门的Java教程
JShell JShell目标 Java Shell 工具(简称:JShell)是一个用于学习Java编程语言和构建Java代码原型的交互式工具.JShell是一个Read-Evaluate-Prin ...
- textView 实现完成收键盘操作
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSStr ...
- collectionView reloadData走了不执行cellForItemAtIndexPath
有可能是sizeForItemAtIndexPath方法中的前几个cell没有设置大小, 这里必须设置, 哪怕是设置一个很小的值