集合类型

集合对象是一组无序排列的可哈希的值,集合可以作为字典的键。因为集合是无序的,不可以为集合创建索引或执行切片操作,也没有键可以用来获取元素的值。

集合有两种不同的类型,可变集合和不可变集合。可变集合不是可哈希的值

集合类型中元素不可重复

创建集合类型的方法只有一个,就是集合的工厂方法set()和frozenste(),括号内的参数必须是可迭代的对象,例如一个文件或着一个字典

set('book')

>>>['b','k','o','o']

当进行集合类型的交集并集差集时,所产生的结果类型和左操作数的类型相同,例如:

s = set('continue')
t = frozenset('break') v = s | t
print(v)
>>>{'o', 'u', 't', 'n', 'e', 'k', 'c', 'i', 'b', 'r', 'a'}
print(type(v))
>>><class 'set'>      # 产生的类型和 s 的类型相同

dir(set):

['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

1.add(obj) 在集合中添加对象obj

s = set('book')
s.add('shop')
print(s) >>>{'o', 'k', 'shop', 'b'}

2.clear 删除集合中的所有元素

s = set('book')
s.clear()
print(s) >>>set()

3.s.copy 返回一个新集合,它是集合s的浅复制

4.s.difference(t)  返回一个新集合,该集合是s的成员,但不是t的成员,相当于s - t(差分操作)

s = set('book')
t = set('shop')
v = s.difference(t)
print(v) >>>{'b', 'k'}

5.s.difference_update(t) s中的成员是属于s但不包含在t中的元素,它与difference的区别在于difference会返回一个新集合,而它不会

s = set('book')
t = set('shop')
s.difference_update(t)
print(s) >>>{'b', 'k'}

6.s.discard(obj) 如果obj是集合s中的元素。从集合s中删除对象obj

s = set('book')
s.discard('o')
print(s) >>>{'k', 'b'}

7.s.intersection(t) 返回一个新集合,是s和t的交集,等价操作符 s & t

s = set('book')
t = set('shop')
v = s.intersection(t)
print(v) >>>{'o'}

8.s.intersection_update(t) 和上面类似,只是不返回新集合

9.s.isdisjoint(t) 如果集合s和t没用交集,返回True,否则返回False

s = set('book')
t = set('shp')
v = s.isdisjoint(t)
print(v) >>>True

10.s.issubset(t) 如果s是t的子集,返回True,否则返回False

11.s.issuperset(t) 如果t是s的超集,返回True,否则返回False

s = set('bookshop')
t = set('book')
v = s.issuperset(t)
print(v) >>>True

12.pop() 删除集合中的任意一个对象,并返回它

s = set('bookshop')
v = s.pop()
print(v) >>>p # 不唯一,可以是s中任意一个对象

13.s.remove(obj) 删除对象obj,如果集合里面没有obj,则有keyerror错误

14.s.symmetric_difference(t) 返回以个新集合,该集合是s或t的成员,但不是s和t共有的成员。对称差分操作,等价操作符是s ^ t

s = set('bookshop')
t = set('break')
v = s.symmetric_difference(t)
print(v) >>>{'o', 'r', 'p', 'a', 'e', 'h', 's'}

15.s.symmetric_difference_update(t) 和上面类似,只是不返回新集合

16.union 并集,等价操作符是s | t

s = set('bookshop')
t = set('break')
v = s.union(t)
print(v) >>>{'s', 'a', 'b', 'r', 'p', 'e', 'k', 'o', 'h'}

17.s.update(t) 用t中的元素修改s

s = set('bookshop')
t = set('break')
s.update(t)
print(s) >>>{'p', 'e', 'r', 'b', 'o', 'k', 'h', 'a', 's'}

以上

set built-in function的更多相关文章

  1. Know How To Use ID_NULL Function To Search An Object In Oracle Forms

    ID_NULL built in function is used to determine that an object type variable is null or not null in O ...

  2. Python学习日志(二)

    在网易云课堂看到小甲鱼的python视频,想起以前看就是看他的视频学C的虽然后来不了了之都怪我自己啦,于是决定跟着这个视频来学python啦! IDLE IDLE其实是一个python shell , ...

  3. Python2.x和3.x主要差异总结

    本文部分转载自http://my.oschina.net/chihz/blog/123437,部分来自自身修改 开始使用Python之后就到处宣扬Python如何如何好,宣传工作的一大重要诀窍就是做对 ...

  4. jquery截图插件的使用

    首先感谢http://www.htmleaf.com/Demo/201504211717.html这款插件. 使用之初,对于插件的结构很是糊涂,首先文件的核心是cropper.js,其次才是mian. ...

  5. (转) Deep Reinforcement Learning: Playing a Racing Game

    Byte Tank Posts Archive Deep Reinforcement Learning: Playing a Racing Game OCT 6TH, 2016 Agent playi ...

  6. 译:在C#中使用LINQ To SQL

    译文出处:http://www.codeproject.com/Tips/871938/LINQ-To-SQL-Using-Csharp 今天在这个话题中,我给大家分享一个在c#编程中非常有趣和十分有 ...

  7. 图书管理之HTML5压缩旋转裁剪图片总结

    整体思路  : 在移动端压缩图片并且上传主要用到filereader.canvas 以及 formdata 这三个h5的api.逻辑并不难.整个过程就是: (1)用户使用input file上传图片的 ...

  8. Part 4 Identity Column in SQL Server

    Identity Column in SQL Server If a column is marked as an identity column, then the values for this ...

  9. 图片剪裁上传插件 - cropper

    图片剪裁上传插件 - cropper <style> .photo-container{float: left;width: 300px;height: 300px;} .photo-co ...

  10. PouchDB 基础

    GUIDES http://pouchdb.com/guides/ 1.建立couchDB环境 下载并安装CouchDB: https://couchdb.apache.org/#download 测 ...

随机推荐

  1. POJ2560 Freckles

    Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu Description In an epis ...

  2. Codeforces963D. Frequency of String

    $n \leq 100000$的一文本串,给$m \leq 100000$个询问,每次问一小串在文本串的哪一个最短的子串里出现指定次数.注意,询问串互不相同,且总长度$\leq 100000$. 比赛 ...

  3. Laravel 修改操作

    增加路由: Route::any('Student/update/{id}',['uses'=>'StudentController@update']); 控制器代码:(Request $req ...

  4. ZOJ 1112 Dynamic Rankings【动态区间第K大,整体二分】

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1112 题意: 求动态区间第K大. 分析: 把修改操作看成删除与增加 ...

  5. 八皇后问题Python实现

    八皇后问题描述 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子.皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子.在一个棋盘上如果要放八个皇后,使得她们互 ...

  6. 2018 ICPC 沈阳网络预赛 Fantastic Graph (优先队列)

    [传送门]https://nanti.jisuanke.com/t/31447 [题目大意]:有一个二分图,问能不能找到它的一个子图,使得这个子图中所有点的度数在区间[L,R]之内. [题解]首先我们 ...

  7. Java的不定参数(eg:Object...)(转)

    第一个例子: public class VariArgs { public static void main(String[] args) { test(); test("aaa" ...

  8. [Testing] JavaScript Mocking Fundamentals

    Ensure Functions are Called Correctly with JavaScript Mocks Often when writing JavaScript tests and ...

  9. [Javascript] Use a custom sort function on an Array in Javascript

    Sorting in Javascript with sort uses lexical sorting by default, which means it will sort in alphabe ...

  10. 杭电1708Fibonacci String

    Fibonacci String Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...