集合 set
集合是可变的容器
集合内的数据对象都是唯一的(不能重复多次的)
集合是无序的存储结构,集合中的数据没有先后顺序关系
集合内的元素必须是不可变的对象
集合是可迭代对象
集合是相当于只有键没有值的字典(键则是集合的数据)
创建空的集合:
set()
创建非空集合:
s = {1, 2, 3}
集合的构造(创建)函数 set
set() 创建一个空的集合对象(不能用{}来创建空集合)
set(iterable) 用可迭代对象创建一个新的集合
示例:
s = set() # 空集合
s = {1,2,3,4}
s =set("ABC") # s = {'A', 'B','C'}
s =set("ABCCBA") # s = {'A', 'B','C'}
s =set({1:"一", 2:"二", 5:"五"}) # s={1,2,5}
s = set([1, 2,3, 2]) # s = {1,2,3}
集合的运算:
交集, 并集, 补集, 子集,超集,对称补集
& | - < > ^
& 生成两个集合的交集
s1 = {1, 2,3}
s2 = {2, 3,4}
s3 = s1& s2 # s3 = {2, 3}
| 生成两个集合的并集
s1 = {1, 2,3}
s2 = {2, 3,4}
s3 = s1 |s2 # s3 = {1, 2, 3, 4}
- 生成两个集合的补集
s1 = {1, 2,3}
s2 = {2, 3,4}
s3 = s1 -s2 # s3 = {1} 生成属性s1但不属性 s2的所有元素的集合
s4 = s2 -s1 # s4 = {4}
^ 对称补集
s1 = {1, 2,3}
s2 = {2, 3,4}
s3 = s1 ^s2 # s3 = {1, 4}
> 判断一个集合是另一个集合的超集
< 判断一个集合是另一个集合的子集
s1 = {4, 5,6}
s2 = {4, 5}
s1 >s2 # True s1是s2的超集
s2 == != 判断集合是否相同 {1, 2, 3} == {2, 3, 1} # True {1, 2} != {3, 4} # True <= >= 判断包含,被包含关系 in / not in 运算符 in判断一个元素是否存在于集合中(同其它容器类型的in 相同) not in 与 in相反 集合和字典的优点: in /not in运算符的查找速度快 集合的内建函数操作: len(x),max(x), min(x), sum(x), any(x), all(x) 练习: 经理有: 曹操, 刘备, 孙权 技术员有:曹操, 孙权, 张飞, 关羽 用集合求: 1. 即是经理也是技术员的人有谁? 2. 是经理, 但不是技术员人的有谁? 3. 是技术员,不是经理的都有谁? 4. 张飞是经理吗? 5. 身兼一职的人都有谁? 6. 经理和技术员共有几个人? python3 中常的集合方法: 详见: /pbase/python_base_docs_html/set.html 集合是可迭代对象 用for语句可以得到集合中的全部数据元素 s = {1,"二", 3.14, "Four"} for x in s: print(x) 集合推导式: 集合推导式是用可迭代对象生成集合的表达式 语法: {表达式for 变量 in 可迭代对象 [if 真值表达式]} 注:[] 括起的部分代表可省略 集合推导式内的 for 子句可以嵌套,语法同列表推导式一致 练习: 写一个程序,任意输入一篇英文文章(可能有多行),当输入空行时结束输入 1. 判断出现英文单词的种类数 the world the dream (种类数是3) 固定集合 frozenset 固定集合是不可变的,无序的,含有唯一元素的集合 作用: 固定集合可以作为字典的键,也可以作为集合的值 只有固定集合可以放在集合里面 建空的固定集合: fz = 不可再往里面加数值 创建非空的固定集合: frozenset(iterable) 用可迭代对象创建集合 例: fz = frozenset([2, 3, 5, 7]) 固定集合的运算: 同set运算完全一致 & 交集, |并集, - 补集, ^ 对称补集, > >=< <= == != in , not in 固定集合的方法: 相当于集合的全部方法去掉修改集合的方法 前8天的总结: 数据类型: 数值类型:bool,int, float, complex, 容器:1.不可变容器 str, tuple, frozenset, bytes 2.可变容器 list, dict, set, bytearray(后面会讲) 值: None, False,True 运算符: 算术运算符:+ - * / // % ** 比较运算符:> >= < <= == != is is not not and or in, not in & | ^ +(正号) -(负号) [](索引,切片,键索引) 表达式: 100 100 + 200 max(1,2,3) x if x>yelse y 条件表达式 len([1,2,3]) +max([1,2,3]) # 函数调用是表达式 print("hello") 条件表达式:x if x > y else y 全部的推导式: [x for x in range(5)] (只有列表,字典,集合推导式三种) 语句 statement 表达式语句:所有的表达式都可以单独的写在一行,形成一个语句 print("hello world") 'hello' 赋值语句: a = 100 a = b = c =200 x, y, z = 100, 200,300 a[0]=100 dict[‘name’]=’tarena’ del if 语句 while 语句 for 语句 break 语句 continue 语句 pass 语句 del 语句 内建函数: len(x) max(x) min(x) sum(x) any(x) all(x) 构造函数: bool(x) int(x,base=10) float(x) complex(real=0, image=0) str(x) list(x) tuple(x) dict(x) set(x) frozenset(x) 数字处理函数: abs(x) round(x) pow(x, y,z=0) 字符串相关函数: bin(x) oct(x) hex(x) chr(x) ord(x) 迭代器相关: range(start,stop, step) reversed(x) sorted(x) 输入输出相关: input(x) print(...) 详见: >>>help(__builtins__) 函数 function 什么是函数: 函数是可以重复执行的语句块,可以重复调用 作用: 用于封装语句,提高代码的重用性 用于定义(创建)用户级别的函数 语法: def 函数名(形参列表): 语句块 说明: 1. 函数的名字就是语句块的名称 2. 函数名的命名规则与变量名相同(函数名必须是标识符) 3. 函数名是一个变量函数名是一个变量 4. 函数有自己名字空间,在函数外部不可以访问函数内部的变量,在函数内部可以访问函数外部的变量,要让函数处理外部数据需要用参数给函数传入一些数据 5. 参数列表可以为空 6. 语句部分不能为空,如果为空需要用pass语句填充 示例见: function1.py 函数调用: 函数名(实际调用传递参数) 说明: 函数调用是一个表达式 如果没有return 语句,函数执行完毕后返回None对象 如果函数需要返回其它的对象需要用到return语句 return 语句 语法: return[表达式] []代表可省略 作用: 用于函数中,结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系