Python学习笔记<四>:Python集合与函数

一、集合的定义

定义:由不同元素组成的集合,集合中是一组无序排列的可哈希值,可以作为字典的Key,集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值。
值得注意的是,集合中的元素一定是无序的,一定是无序的,一定是无序的!重要的事情说三遍,例如想从集合中删除某个元素:
s = {1,2,3,4}
s.pop()  #输出结果为 {2,3,4}

上面的代码表面上看是从左边开始删除,但实际上并不是,重新一段代码:

s = {'s',1,2,3,4}
s.pop()  #输出结果为 {2,3,4,'s'}

可以看到开头的‘s’并没有被删除,因此可以再次确认,集合里的元素是无序的!想要删除指定的元素,可以使用remove()搞定。但最好是用discard()来删除,如果集合中没有找到对应的元素,remove()会直接报错导致程序崩溃,而discard()则不会。

二、集合的关系运算——交,差,并,交叉补集

  1. 求交集
p_s = {111,222,333}
l_s = {111,222}

print(p_s.intersection(l_s)) #求交集方法1
print(p_s & l_s)             #求交集方法2
  1. 求并集
p_s = {111,222,333}
l_s = {111,222}

print(p_s.union(l_s)) #求并集方法1
print(p_s | l_s)      #求并集方法2
  1. 求差集
p_s = {111,222,333}
l_s = {111,222}

print(p_s.difference(l_s)) #求差集方法1
print(p_s - l_s)           #求差集方法2
  1. 求交叉补集(先并,用并出的结果减去交集的部分)
p_s = {111,222,333}
l_s = {111,222}

print(p_s.symmetric_difference(l_s)) #求交叉补集方法1
print(p_s ^ l_s)                     #求交叉补集方法2
  1. 判断两个集合是否有交集 —— xxx.isdisjoint()
    返回值:Ture or False
  2. 判断一个集合是否是另外一个集合的子集 —— xxx.issubset()
    返回值:Ture or False
  3. 判断一个集合是否是另外一个集合的父集 —— xxx.issuperset()
    返回值:Ture or False
  4. 定义一个不可变集合方法:frozenset()

三、函数

  1. 定义格式
def test(x):
"The function definitions"
x += 1
return x

此处函数的定义和C语言的基本一样,就是前缀有不同,一般C语言的函数前缀都要定义返回值类型,比如int、float等等,没有则填void空, 而Python在这里应当是将所有的类型都囊括进来了,相当于直接支持全部的类型,无论你return的值是什么,都可以,因此只要填def就代表此处要定义一个函数了。此外,函数当中有一个特殊的东西叫过程,二者的区别就是:过程没有返回值,而函数有返回值,仅此而已。
注意:C语言中的返回值只能是一个,而且与开头函数定义时所规定的返回类型相同,但Python不一样,Python可以返回多个值,多个值被放在一个元组里,其实也相当于是返回了一个值,只不过被打包起来了而已。

  1. 形参与实参
    形参变量只有在被调用时才分配内存单元,在调用结束时,即可释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
    实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
    调用形参与实参时有两种方式:
    (1)标准调用:实参与形参位置一一对应
    (2)关键字调用:位置无需一一对应
    如果混合使用,位置参数必须在关键字参数左边,并且也要保证每个形参都有值传入。另外,参数组可以输入可变长的,*列表,**字典。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值