python集合操作

一:python官方文档
https://docs.python.org/3.6/library/stdtypes.html#set-types-set-frozenset
二:集合概念
- 集合是无序的
- 集合是无重复元素的

一:add()
会改变原有集合
>>> s = set('HackerRank')
>>> s.add('H')
>>> print s
set(['a', 'c', 'e', 'H', 'k', 'n', 'r', 'R'])
>>> print s.add('HackerRank')#添加后返回none
None
>>> print s
set(['a', 'c', 'e', 'HackerRank', 'H', 'k', 'n', 'r', 'R'])
set.add()
二:pop(),discard(),remove()
- pop()是随机删除元素
- discard(),remove()是删除指定元素的
- discard()在删除不存在元素是不会报错,而remvoe()会报keyerror错误
- 都会改变原有集合
set.pop()
>>> s = set([])
>>> print s.pop() >>> print s
set([])
>>> print s.pop()
KeyError: pop from an empty set
set.pop()
set.remove()
>>> s = set([, , , , , , , , ])
>>> s.remove()
>>> print s
set([, , , , , , , ])
>>> print s.remove()#默认返回None
None
>>> print s
set([, , , , , , ])
>>> s.remove()
KeyError:
set.remove()
set.discard()
>>> s = set([, , , , , , , , ])
>>> s.discard()
>>> print s
set([, , , , , , , ])
>>> print s.discard()
None
>>> print s
set([, , , , , , ])
>>> s.discard()
>>> print s
set([, , , , , , ])
set.discard()
三:intersetcion(),difference(),unoin(),symmetric_difference(),交集,差集,并集,对称差集
不改变原有集合
set.intersection()
>>> s = set("Hacker")
>>> print s.intersection("Rank")
set(['a', 'k'])
>>> print s.intersection(['R', 'a', 'n', 'k'])
set(['a', 'k'])
>>> print s.intersection(enumerate(['R', 'a', 'n', 'k']))
set([])
>>> print s.intersection({"Rank":})
set([])
>>> s & set("Rank")
set(['a', 'k'])
set.intersection()
set.difference()
#set1有的而set2没有的元素
>>> s = set("Hacker")
>>> print s.difference("Rank")
set(['c', 'r', 'e', 'H']) >>> print s.difference(set(['R', 'a', 'n', 'k']))
set(['c', 'r', 'e', 'H']) >>> print s.difference(['R', 'a', 'n', 'k'])
set(['c', 'r', 'e', 'H']) >>> print s.difference(enumerate(['R', 'a', 'n', 'k']))
set(['a', 'c', 'r', 'e', 'H', 'k']) >>> print s.difference({"Rank":})
set(['a', 'c', 'e', 'H', 'k', 'r']) >>> s - set("Rank")
set(['H', 'c', 'r', 'e'])
set.difference()
set.unoin()
>>> s = set("Hacker")
>>> print s.union("Rank")
set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
>>> print s.union(set(['R', 'a', 'n', 'k']))
set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
>>> print s.union(['R', 'a', 'n', 'k'])
set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
>>> print s.union(enumerate(['R', 'a', 'n', 'k']))
set(['a', 'c', 'r', 'e', (, 'a'), (, 'n'), 'H', 'k', (, 'k'), (, 'R')])
>>> print s.union({"Rank":})
set(['a', 'c', 'r', 'e', 'H', 'k', 'Rank'])
>>> s | set("Rank")
set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
set.union()
set.symmetric_difference()
>>> s = set("Hacker")
>>> print s.symmetric_difference("Rank")
set(['c', 'e', 'H', 'n', 'R', 'r'])
>>> print s.symmetric_difference(set(['R', 'a', 'n', 'k']))
set(['c', 'e', 'H', 'n', 'R', 'r'])
>>> print s.symmetric_difference(['R', 'a', 'n', 'k'])
set(['c', 'e', 'H', 'n', 'R', 'r'])
>>> print s.symmetric_difference(enumerate(['R', 'a', 'n', 'k']))
set(['a', 'c', 'e', 'H', (, 'R'), 'r', (, 'n'), 'k', (, 'a'), (, 'k')])
>>> print s.symmetric_difference({"Rank":})
set(['a', 'c', 'e', 'H', 'k', 'Rank', 'r'])
>>> s ^ set("Rank")
set(['c', 'e', 'H', 'n', 'R', 'r'])
set.symmertic_difference
四:update(),difference_update(),set.symmetric_difference_update()
set.update(set2):以集合2还更新集合1,加入到集合1中
>> myset.update([, , , ]) # update() only works for iterable objects
>> myset
{'a', , 'c', 'b', , , (, ), }
>> myset.update({, , })
>> myset
{'a', , 'c', 'b', , , , , (, ), }
>> myset.update({, }, [, ])
>> myset
{'a', , 'c', 'b', , , , , , , (, ), , }
set.update()
set.difference_update(set2):用set1-set2来更新set1,覆盖set1值
#用A,B的差集来更新A
>>> H = set("Hacker")
>>> R = set("Rank")
>>> H.difference_update(R)
>>> print H
set(['c', 'e', 'H', 'r'])
set.difference——update()
set.symmetric_difference_update(set2):用set1和set2的对称差集来更新set1,覆盖set1的值
#用A,b互相差集来更新A
>>> H = set("Hacker")
>>> R = set("Rank")
>>> H.symmetric_difference_update(R)
>>> print H
set(['c', 'e', 'H', 'n', 'r', 'R'])
set.systemeratic_update()
五:isdisjoint(), issubset(), issuperset()
set.isdisjoint():如果两个集合没有交集则返回True。
s1,s2={,,},{,,}s1.isdisjoint(s2)True
set.isdisjoint()
issubset():是否为子集
issubset(other)¶set <= other-
Test whether every element in the set is in other.
set < other:严格子集-
Test whether the set is a proper subset of other, that is,
set <= other and set != other
>>> set1={,,,,}
>>> set2={,,,,,}
>>> set1.issubset(set2)
True
>>> set3={,,,,,}
>>> set3.issubset(set2)
True
>>> set3<set2
False
>>> set1<set2
True
issuperset(other)¶set >= other-
Test whether every element in other is in the set.
set > other:严格父集-
Test whether the set is a proper superset of other, that is,
set >= other and set != other.
a = set(input().split())
print(all(a > set(input().split()) for _ in range(int(input()))))
python集合操作的更多相关文章
- Django数据库性能优化之 - 使用Python集合操作
前言 最近有个新需求: 人员基础信息(记作人员A),10w 某种类型的人员信息(记作人员B),1000 要求在后台上(Django Admin)分别展示:已录入A的人员B列表.未录入的人员B列表 团队 ...
- Python 集合操作
1.集合操作 集合是一个无序的,不重复的数据组合, 他的主要作业如下. 1.去重,把一个列表变成集合,就自动去重了 2.关系测试,测试两组数据之前的交集.差集.并集等关系 list_1 = [1,4, ...
- python集合操作和内置方法
一 集合基本介绍 集合:在{}内用逗号隔开每个值,集合的特点: 每个值必须是不可变类型 集合是无序的 集合的值不能重复 集合的应用场景较少,最重要的应用场景为进行关系运算以及去重. 二 集合的操作 1 ...
- Python 集合set添加删除、交集、并集、集合操作符号
在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...
- [转]python集合set
Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...
- Python学习笔记-Day3-set集合操作
set集合,是一个无序且不重复的元素集合.定义方式类似字典使用{}创建 目前我们学过的数据类型: 1.字符串(str),2.整型(int),3.浮点型(float),4,列表(list) 5.元组(t ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- Python值集合操作
list_l1 = [12,1,4,6,9,5,4,2,11] list_l1 = set(list_l1) print(list_l1,type(list_l1)) #集合也是无序的 list_2 ...
- Python 集合set()添加删除、交集、并集、集合操作详解
集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...
随机推荐
- CSS3常用的循环动画
定义动画 @keyframes rotatefresh { from { transform: rotate(0deg) } to { transform: rotate(360deg); trans ...
- Java 8 特性 —— 函数式接口
函数式接口 概述:接口中只有一个抽象方法. 函数式接口,即适用于函数式编程场景的接口.而 Java 中的函数式编程体现就是 Lambda,所以函数式接口就是可以适用于 Lambda 使用的接口.只有确 ...
- django 3.post接口开发
如果有了一个项目,还想创建一个项目,那么就是进入项目的路径下,运行命令,比如: cd /Users/newcomer/PycharmProjects/djangoProject python3 man ...
- 神奇的 UNICODE 字符 : U+202E
- Ext.Net的一例Ext Undefined解决办法
在运行的产品里发现了一例Ext Undefined报错.经过仔细排查原因是一个Ext.net按钮控件前端显示部分使用了<% if() <%> 动态控制输出Html脚本(有对应的后端 ...
- 第30月第13天 supportedInterfaceOrientationsForWindow旋转
1. 对于做视频横屏播放的情况下:做旋转有3种方法. 第一种:就是网上说的用旋转矩阵方法CGAffineTransformMakeRotation来做,直接旋转某个view,之后setFrame,至于 ...
- Keep面经汇总
目录 一.Java 线程如何终止 如何用一个cancel方法停止两个线程 泛型原理.使用场景.优缺点 手写代码,设计parseInt hashmap是怎么实现的,是线程安全的吗 知道hashmap的扩 ...
- word20170101厨房家电kitchen appliances
1. Microwave Ovens 2. Electric Kettles 3. Coffeemakers 4. Espresso Machines 5. Toasters 6. Sandwich ...
- 二分查找算法的java实现
1.算法思想: 二分查找又称折半查找,它是一种效率较高的查找方法. 时间复杂度:O(nlogn) 二分算法步骤描述: ① 首先在有序序列中确定整个查找区间的中间位置 mid = ( low + ...
- 2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践 实验内容(概要): (1)使用netcat获取主机Shell,cron启动 首先两个电脑(虚拟机)都得有netcat, ...