鱼C论坛

 找回密码
 立即注册
查看: 2000|回复: 1

[学习笔记] 集合和函数

[复制链接]
发表于 2019-4-22 20:25:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我是python小白 于 2019-4-22 20:35 编辑

set:类似dict,是组key的集合,不存储value
本质:无序和无重复元素的集合。

创建set:
需要一个list或者tuple或者dict作为输入集合

  1. s1 = set((1,2,3,3,5,2,1))
  2. {1,2,3,5}
  3. s1 = set({1:"key",2:"b"})
  4. {1,2}
复制代码
添加set:
插入一个元素

  1. s4 = set([1,2,3,4])
  2. s4.add(5)
  3. s4.add(4)#输入重复的值,没有效果,因为集合值是唯一
  4. s4.add([1,2,3])#不能用可变对象存入集合中,列表是可变的
复制代码
插入list、tuple、字符串,打碎插入。

  1. s5 = set([1,2,3,4,5])
  2. set.update([1,2,3])
  3. set.update("scknu")
复制代码
删除
  1. s5 = set([1,2,3,4,5])
  2. set.remove(3)
复制代码
遍历
  1. for index,data in enumerate(s7)
复制代码
交集
a1 = s8 & s9

返回一个新的集合,是2个列表都有相同的值。

并集
a2 = s8 |s9

返回一个新的集合,是2个列表值合并并且不会有重复的。

类型转换
  1. # list-->set
  2. l1 = [1,2,3,4,5,3,2,1]
  3. s1 = set(l1)
  4. # tuple-->set
  5. t2 = (1,2,3,4,3,2,1)
  6. s2 = set(t2)
  7. # dict-->set
  8. d3 = {1:"wo"}
  9. s3 = set(d3)
  10. #set-->list
  11. s4 = {1,2,3,4}
  12. l4 = list(s4)
  13. #set --> tuple
  14. s5 = {1,2,3,4}
  15. t5 = tuple(s5)
复制代码
迭代器
可迭代对象:可以直接作用于for循环的对象通称为可迭代对象。

(Iterable).可以使用isinstance()去判断一个对象是否是Iterable对象

可以直接作用于for的数据类型一般分两种

1、结合数据类型,如list、tuple、dict、set、string

2、是generator,它是包括生成器和带yield的generator function

  1. #判断是否是可迭代对象
  2. from collections import Iterable
  3. print(isinstance([],Iterable))
  4. #返回真假
复制代码
迭代器:不但作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出一个StopIteration错误表示无法继续返回下一个值*
可以被next(函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)

可以使用isinstance()函数判断一个对象是否是一个Iterator对象。

  1. (x for i in range(10))#迭代对象
复制代码
转成Iterator对象

  1. a = iter([1,2,3,4,5])
  2. print(next(a))
复制代码
函数
认识函数:在一个完整的项目中,某些功能会反复的使用。那么会将功能封装成函数,当我们要使用功能的时候直接调用函数即可

本质:函数就是对功能的封装

优点:

1.简化代码结构,增加代码的复用度(重复使用的程度)

2.如果想修改某些功能或者修改某个bug,还需要修改对应函数即可。

定义函数*
  1. #函数格式:
  2. def 函数名(参数列表):
  3.         、语句
  4.       return 表达式
复制代码
def:函数代码块以def关键字开始。

函数名:遵循标识符规则

():是参数列表开始和结束

参数列表(参数,参数2,........,参数n:):任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者哪里获取得信息。

冒号:函数内容(封装的功能)以冒号开始,并且缩进

语句:函数封装的功能。

return:一般用于结束函数,并返回信息给函数的调用者

表达式:要返回给函数的调用者的信息,

注意:最后return表达式,可以不写,相当于return None

简单函数(无参无返回值的函数)
函数的调用
  1. #函数调用格式:
  2. 函数名(参数列表)
复制代码
函数名:是要使用的功能的函数函数名字

参数列表:函数的调用者给函数传递信息,如果没有参数小括号也不能省略。

函数调用的本质:实参形参赋值的过程。

函数参数
实参:在调用函数时给函数传递的数据,本质是值。

形参:在函数定义时小括号中的变量,本质是变量。

注意:参数必须按顺序传递,个数要一一对应(除默认)。

函数的返回值
  1. def mysum(num, num2):
  2.     #将结构返回给函数的调用者
  3.     return num + num2
  4.         #执行完return语句,该函数就结束了,return后面的代码不执行
  5.     print("******************")
复制代码
传递参数
值传递:传递的不可变类型

string,tuple,number

引用传递:传递的可变类型

list,dict,set

关键字参数
概念:允许函数调用时的顺序与定义时不同。

  1. def myprint(str, age):
  2.     print(str, age)
  3. #使用关键字参数
  4. myprint(age = 18, str = "helloword")
复制代码
默认参数
概念:调用函数时,如果没哟传递参数,则使用默认参数

以后要用默认参数,最好将默认参数放到左后去。

  1. #定义默认参数
  2. def myprint(str="helloword", age = 18):
  3.     print(str, age)
  4. myprint()
复制代码
不定长参数
概念:能处理比定义时更多的参数

  1. #加了星号(*)的变量放在所有未命名的变量参数,如果在调用时没有指定参数,他就是一个空元祖
  2. def func(name, *arr):
  3.     print(name)
  4.     for x in arr:
  5.         print(x)
复制代码
  1. #**代表键值队的参数字典。和*类似
  2. def func2(**kwargs):
  3.     print(kwargs)
  4. func2(x=1, y=2, z=3)
复制代码
匿名函数
概念:不适用def这样的语句定义函数,使用lambda来创建匿名喊函数。

特点:

1、lambda只是一个表达式,函数体比def简单

2、lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑

3、lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名参数的参数。

4、虽然lambda是一个表达式且看起来只能写一行,与c和c++内联函数不同。

格式:

  1. #格式:
  2. lambda 参数1,参数2。。。。。,参数n:expression
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-23 19:41:04 | 显示全部楼层
不错不错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-17 05:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表