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模块中,大家现在使 ...
随机推荐
- jquery 设置 transform/translate 获取 transform/translate 的值
//获取 transform 值 var reg=/matrix.(((-)?([0-9]+.)?\d+([, ]+)?){6})./g; var str= progressUI.css(" ...
- Rest Framework
目录导航 一.RESTful 规范 二.APIView 组件 三.序列化组件 四.认证组件 五.权限组件 六.频率组件 七.分页器组件 一.RESTful 规范 什么是RESTful规范: REST与 ...
- wqs二分
今天模拟赛有一道林克卡特树,完全没有思路 赛后想了一想,不就是求\(k+1\)条不相交的链,使其权值之和最大嘛,傻了. 有一个最裸的\(DP\),设\(f[i][j][k]\)表示在以\(i\)为根的 ...
- 《STL源码剖析》----2.23 value_type()和__type_traits<>如何实现
在2.13小节destory()第二版本接受两个迭代器找出元素类型,代码如下 其中value_type()判断出类型,__type_traits判断是否存在trivial destructor 在3. ...
- unittest 框架-待优化
模块1 :getdata.py 读取测试用例test_case.xlsx,返回测试用例结果 import json from openpyxl import load_workbook class D ...
- Node的安装和进程管理
安装nvm git clone https://github.com/creationix/nvm.git source nvm/nvm.sh 安装node nvm install 6.14.4(版本 ...
- fiddler和手机连接抓包实现
很好用的抓包工具,不需要手机usb连接就可以抓包,查找bug超方便 实现方法: 借鉴跳转 手机版本:andriod 7.1.1 上面的方法的基础上遇到的问题: 在浏览器下载下来证书后始终无法打开(或许 ...
- IPv6 RIPng (PT)
在Cisco路由器上配置RIPng 一.拓扑图 二.地址表 Device Interface IPv6 Address R1 F 0/0 2001:0DB8:CAFE:0001::1/64 S 0/ ...
- 【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
Description 人的一生不仅要靠自我奋斗,还要考虑到历史的行程. 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势. 你发现在历史的不同时刻,不断的 ...
- ibatis .net $与#的区别
$与#的区别 SELECT * FROM TABLE WHERE Id = #id# 其中如果字段id为字符串类型,那么#id#表示的就是'id',也就是说会自动加引号.如果id为整型,那么#id#就 ...