python-集合类型
集合具有唯一性(集合中的元素各不相同),无序性,确定性(集合中的元素是不可改变的,不能是列表,字典以及集合本身)
1.add(self, *args, **kwargs),union(self, *args, **kwargs),update(self, *args, **kwargs)
add方法:向字典中添加一个元素,当字典中存在这个元素时,不做任何操作(只能添加一个元素)
union方法:传入一个可迭代的参数,union方法将迭代出里面的元素,更新到字典的副本中,不改变原字典(传入一个可迭代对象,添加多个元素,原字典不变)
update方法:与union方法类似,不同的是update方法修改原字典(传入一个可迭代对象,添加多个元素,修改原字典)

1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.add('php')
3 >>> set1
4 {'c', 'c++', 'php', 'python', 'java'}
5 >>> set1.add('php')
6 >>> set1
7 {'c', 'c++', 'php', 'python', 'java'}


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'python', 'c', 'php'}
3 >>> set1.union(set2)
4 {'java', 'c', 'c++', 'php', 'python'}
5 >>> set1.union(['linz'])
6 {'c', 'c++', 'python', 'java', 'linz'}
7 >>> set1.union('linz')
8 {'c', 'c++', 'l', 'i', 'python', 'java', 'n', 'z'}
9 #set1不发生改变
10 >>> set1
11 {'java', 'c', 'c++', 'python'}


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.update({'java', 'php'})
3 >>> set1
4 {'java', 'c', 'c++', 'php', 'python'}
5 >>> set1.update('123')
6 >>> set1
7 {'java', 'c', 'c++', '1', '3', 'php', '2', 'python'}

2.clear(self, *args, **kwargs)
清空字典中的所有元素
1 >>> set1 = {'java', 'c', 'c++', '1', '3', 'php', '2', 'python'}
2 >>> set1.clear()
3 >>> set1
4 set()
3.copy(self, *args, **kwargs)
与列表中的copy方法类似,返回字典的副本,同样的也是浅复制

1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.copy()
3 {'java', 'c', 'c++', 'python'}
4 >>> set2 = set1.copy()
5 >>> set2
6 {'java', 'c', 'c++', 'python'}

4.difference(self, *args, **kwargs) 与 difference_update(self, *args, **kwargs)
求两个集合的差集。difference方法不修改set1,返回一个差集的字典副本;而difference_update方法直接修改set1,等于差集

1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'go', 'c', 'php'}
3 >>> set1.difference(set2)
4 {'java', 'python'}
1 #set1发生改变
2 >>> set1.difference_update(set2)
3 >>> set1
4 {'java', 'python'}
5.discard(self, *args, **kwargs),pop(self, *args, **kwargs),remove(self, *args, **kwargs)
pop方法随机删除集合中的一个元素,当集合为空的时候程序报错
discard从集合中移除特定元素。如果元素不是该集合成员,则什么也不做。
remove从一个集合中移除一个元素,这个元素必须是集合的一个成员。如果元素不是成员,则引发键错误。

>>> set1 = {'python', 'java', 'c', 'c++'}
>>> set1.pop()
'java'
#当集合为空集时,程序报错
>>> se1 = {}
>>> se1.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 arguments, got 0


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.discard('python')
3 >>> set1
4 {'java', 'c', 'c++'}
5 #删除'python'之后,再次删除,程序不做任何事情
6 >>> set1.discard('python')
7 >>> set1
8 {'java', 'c', 'c++'}


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.remove('python')
3 >>> set1
4 {'java', 'c', 'c++'}
5 #删除'python'之后,再次删除,程序报错
6 >>> set1.remove('python')
7 Traceback (most recent call last):
8 File "<stdin>", line 1, in <module>
9 KeyError: 'python'

6.intersection(self, *args, **kwargs) 与 intersection_update(self, *args, **kwargs)
求set1与set2的交集;intersection方法不修改set1,返回一个交集的字典副本;而intersection_update方法直接修改set1,等于交集


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'go', 'c', 'php'}
3 >>> set1.intersection(set2)
4 {'c', 'c++'}
5 >>> set1
6 {'java', 'c', 'c++', 'python'}


1 #set1发生改变
2 >>> set1 = {'python', 'java', 'c', 'c++'}
3 >>> set2 = {'c++', 'go', 'c', 'php'}
4 >>> set1.intersection_update(set2)
5 >>> set1
6 {'c', 'c++'}

7.isdisjoint(self, *args, **kwargs)
判断两个集合的交集是不是空集,如果是空集返回True

1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'go', 'c', 'php'}
3 >>> set1.isdisjoint(set2)
4 False
5 >>> set2 = {'go', 'php'}
6 >>> set1.isdisjoint(set2)
7 True

8.issubset(self, *args, **kwargs) 与 issuperset(self, *args, **kwargs)
set1.issubset(set2),判断set1是不是set2 的子集,如果是子集,则返回True
set1.issuperset(set2),判断set1是不是set2的父集(即set2是不是set1的子集),如果是父集,则返回True

1 >>> set2 = {'python', 'java', 'c', 'c++'}
2 >>> set1 = {'c++', 'c'}
3 >>> set1.issubset(set2)
4 True
5 >>> set1 = {'c++', 'c', 'go'}
6 >>> set1.issubset(set2)
7 False


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'c'}
3 >>> set1.issuperset(set2)
4 True
5 >>> set2 = {'c++', 'c', 'go'}
6 >>> set1.issuperset(set2)
7 False

9.symmetric_difference(self, *args, **kwargs) 与 symmetric_difference_update(self, *args, **kwargs)
求两个集合交叉补集,symmetric_difference方法不修改set1,返回一个交叉补集的字典副本;而symmetric_difference_update方法直接修改set1,等于交叉补集


1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'php', 'go', 'c', 'c++'}
3 >>> set1.symmetric_difference(set2)
4 {'php', 'python', 'java', 'go'}
5 >>> set1
6 {'java', 'c', 'c++', 'python'}
7 >>> set1.symmetric_difference_update(set2)
8 >>> set1
9 {'python', 'php', 'java', 'go'}

python-集合类型的更多相关文章
- Python集合类型的操作与应用
Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...
- 代码与图详解性能之Python集合类型(list tuple dict set generator)
Python内嵌的集合类型有list.tuple.set.dict. 列表list:看似数组,但比数组强大,支持索引.切片.查找.增加等功能. 元组tuple:功能跟list差不多,但一旦生成,长度及 ...
- python集合类型
集合类型简介 集合也是容器,其内元素都是无序.唯一.不可变的.它常用来做成员测试.移除重复数据.数据计算(比如交集.并集.差集). 集合Set是dict的无value版.集合也使用大括号包围: > ...
- 遇见Python集合类型
Python目前有两种内置集合类型,set和frozenset. Ⅰ.两者区别 set是可变的,没有哈希值,其内容可以使用add()和remove()这样的方法来改变,所以不能被用作字典的键或其他集合 ...
- python集合类型set
set 类型的简单粗暴取出并集合交集 | & li=[11,22,33] n_li=[44,55] b= (list(set(li)&set(n_li))) b2=set(li) ...
- 《Python核心编程》 第七章 映射和集合类型 - 习题
课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {' :' python' } dict2 = {' :"hello" } dict ...
- python set type 集合类型的数据介绍 (set frozenset)
python支持数学中的集合概念,如:通过in,not in 可以检查某元素是否在,不在集合中. python有两种集合类型,set(可以变的,不能哈希,不能用作字典的key),frozenset ...
- Python核心编程(第七章)--映像和集合类型
字典:它是一个容器类型,能存储任意个数的Python对象,也包括其他容器类型,Python的字典是作为可变的哈希表实现的 映像类型中的数据是无序排列的 可以用工厂方法dict()来创建字典,也可以 ...
- Python基础-字符串、集合类型、判断、深拷贝与浅拷贝、文件读写
字符串 1.定义三个变量: 2.交换两个变量值 1)引入第三个变量: 2)Python引入第三方变量: 3)不引入第三方变量: 3. isalpha 是否是汉字或字母 4.Isalnum 是否是汉字 ...
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
随机推荐
- 三大框架之list
前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...
- Oracle自定义行转列函数
--行转列自定义函数,只针对TABLE1表 --paramType是参数类型,用于判断,param1和param2是条件参数 create or replace function My_concat( ...
- IEEP-网络规划
HCNP-R&S证书是公认人具备中小型企业网络构建和管理能力的专业人士 IEEP包含五个方面内容 1.网络规划与设计 2.网络实施与维护 3.网络排障 4.网络优化 5.网络割接 ...
- WIN10安装VS2013出现兼容性问题解决
在WIN10安装VS2013时,会提示“windows程序兼容模式已打开”,通过搜索引擎搜索的常见方案为: 1.使用命令行安装,进入vs_ultimate文件所在目录,输入:vs_ultimate / ...
- Mrach 9 2017 Week 10 Thursday
There is a kind of beauty in imperfection. 有一种美叫做不完美. Every thing, every one, in the world, is not p ...
- ZT 自定义operator new与operator delete的使用(1)
http://blog.csdn.net/waken_ma/article/details/4004972 先转两篇文章: 拨开自定义operator new与operator delete的迷雾 C ...
- 关于《Selenium 2自动化测试实战 基于Python语言》学习过程中键盘的常用操作
下边是自己在学习过程中总结的一些常用键盘的操作
- C语言 指向函数的指针
#include <stdio.h> int sum(int a, int b) { int c = a + b; printf("%d + %d = %d\n", a ...
- hdu-1754 I Hate It---线段树模板题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1754 题目大意: 求区间最大值+单点修改 解题思路: 直接套用模板即可 #include<bi ...
- sparkStreamming原理
一.Spark Streamming 是基于spark流式处理引擎,基本原理是将实时输入的数据以时间片(秒级)为单位进行拆分,然后经过spark引擎以类似批处理的方式处理每个时间片数据. 二.Spar ...