集合
一.集合的无序性和独特性
1.集合中的所有元素都应是独一无二的,而且是无序的(set是集合)
2.创建集合的三种方法:
(1).添加集合元素
(2).集合推导式(可看出集合的无序性)
(3).类型构造器
3.因为集合是无序的,无法用下标索引的方式进行访问(可以用in和not in)
4.可用迭代的方式访问集合(依旧是无序的)
5.可以做到去重,并且查询是否有重复
二.集合的各种方法大合集
(除了最后一个,其他的都是可以多参数的)
2.Python同时提供了相应的运算符进行计算
并集采用管道符(|)
交集采用&符号
差集使用减号(-)
对称差集使用脱字符(^)
使用运算符的时候,两边都应是集合
三.集合被分为可变和不可变两种现象
1.set()可变,frozenset()不可变
(前面所用到的不会修改集合中的内容,所以两者皆可用到)
2.仅适用于set()的方法(即会对集合进行改动)
(1).update方法(文档中如果other有s,即代表支持多个参数)
对集合进行插入(frozenset无法改变)
(2).原来的方法是会更改集合的内容
(union_update是上面的update直接使用)
(3).单纯的往集合里面添加某个数据(可用add的方法)
(add是直接使用完整的字符串加入,并没有拆成每个元素)
(4).在集合中要删除某个元素
remove()和discard()
(如果指定元素不存在,remove会抛出异常,discard则会静默处理)
PS:还有一个pop(),用于随机从集合中弹出来一个元素
(存储顺序是随机的,所以弹出来的顺序同样也是随机的,故相同)
clear()是直接将集合清空
四.可哈希
想要正确的创建集合和字典,要求字典的键和集合的元素必须是可哈希的
(硬性要求)
如果一个对线是可哈希的,则要求其哈希值必须在其整个程序的生命周期中保持不变
1.整数是其本身,值相等,哈希值也相等
2.大多数不可变的对象是可哈希的,可变的对象则是不可哈希的
字典的键,集合的元素需要是可哈希的
3.如何实现集合的嵌套
集合是可变的,即不可哈希,但集合中的元素应该是可哈希的(故用frozenset()进行嵌套)
PS:集合后面有散列表的支持,所以int集合的可以直达目标(但需要海量的存储空间)
函数(一)
一.创建和调用函数
1.函数的创建
(pass空语句)
2.函数的参数(对函数的个性化定制)
3.形式参数和实际参数
形参:name和times
实参:“Python”和5
4.函数的返回值
(一个函数没有通过return语句显示的来返回内容,其也会在执行完函数体中所有语句后,悄悄的返回一个None值)
二.函数的参数
1.位置参数
在定义参数的时候,已经将参数的名字和位置给确定下来,这位位置固定的参数,就是位置参数
2.关键字参数
3.同时使用位置参数和关键字参数
(位置参数必须在关键字参数之前)
4.默认参数
只能放在最后面
PS:help(sum)或help(abs)中的斜杠表示,斜杠左侧的参数必须传递位置参数(不能是关键字参数),右侧随意
*表示左侧即可以是位置参数,也可以是关键字参数,右侧的b和c,则必须是关键字参数
三.收集参数
在形参的名字前面加上一个星号来表示
1.可以一次性收集多个参数
2.直接打印形参,背后立功的是元组
3.函数可以返回多个值
4.Python利用元组进行解包
5.利用Python进行打包
(缺少为a和b两个参数传递实参的过程,需要关键字参数的传递方式)
6.限制只能使用关键字参数,不能使用位置参数时(*匿名的收集参数)
(*后的,需要用关键字参数,前面的打包成元组)
7.可以用(**)将参数打包成字典(一定要用关键字参数(左边键,右边值))
8.二者混合:
其中1是位置参数,2,3,4为元组的,5,6为字典的
9.format即是元组形式的搜集参数,也是字典形式的搜集参数
10.解包参数
在实参中,可用(*args)对元组进行解包
而(**args)则是对字典进行解包