集合和函数
本帖最后由 我是python小白 于 2019-4-22 20:35 编辑set:类似dict,是组key的集合,不存储value
本质:无序和无重复元素的集合。
创建set:
需要一个list或者tuple或者dict作为输入集合
s1 = set((1,2,3,3,5,2,1))
{1,2,3,5}
s1 = set({1:"key",2:"b"})
{1,2}
添加set:
插入一个元素
s4 = set()
s4.add(5)
s4.add(4)#输入重复的值,没有效果,因为集合值是唯一
s4.add()#不能用可变对象存入集合中,列表是可变的
插入list、tuple、字符串,打碎插入。
s5 = set()
set.update()
set.update("scknu")
删除
s5 = set()
set.remove(3)
遍历
for index,data in enumerate(s7)
交集
a1 = s8 & s9
返回一个新的集合,是2个列表都有相同的值。
并集
a2 = s8 |s9
返回一个新的集合,是2个列表值合并并且不会有重复的。
类型转换
# list-->set
l1 =
s1 = set(l1)
# tuple-->set
t2 = (1,2,3,4,3,2,1)
s2 = set(t2)
# dict-->set
d3 = {1:"wo"}
s3 = set(d3)
#set-->list
s4 = {1,2,3,4}
l4 = list(s4)
#set --> tuple
s5 = {1,2,3,4}
t5 = tuple(s5)
迭代器
可迭代对象:可以直接作用于for循环的对象通称为可迭代对象。
(Iterable).可以使用isinstance()去判断一个对象是否是Iterable对象
可以直接作用于for的数据类型一般分两种
1、结合数据类型,如list、tuple、dict、set、string
2、是generator,它是包括生成器和带yield的generator function
#判断是否是可迭代对象
from collections import Iterable
print(isinstance([],Iterable))
#返回真假
迭代器:不但作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出一个StopIteration错误表示无法继续返回下一个值*
可以被next(函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)
可以使用isinstance()函数判断一个对象是否是一个Iterator对象。
(x for i in range(10))#迭代对象
转成Iterator对象
a = iter()
print(next(a))
函数
认识函数:在一个完整的项目中,某些功能会反复的使用。那么会将功能封装成函数,当我们要使用功能的时候直接调用函数即可
本质:函数就是对功能的封装
优点:
1.简化代码结构,增加代码的复用度(重复使用的程度)
2.如果想修改某些功能或者修改某个bug,还需要修改对应函数即可。
定义函数*
#函数格式:
def 函数名(参数列表):
、语句
return 表达式
def:函数代码块以def关键字开始。
函数名:遵循标识符规则
():是参数列表开始和结束
参数列表(参数,参数2,........,参数n:):任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者哪里获取得信息。
冒号:函数内容(封装的功能)以冒号开始,并且缩进
语句:函数封装的功能。
return:一般用于结束函数,并返回信息给函数的调用者
表达式:要返回给函数的调用者的信息,
注意:最后return表达式,可以不写,相当于return None
简单函数(无参无返回值的函数)
函数的调用
#函数调用格式:
函数名(参数列表)
函数名:是要使用的功能的函数函数名字
参数列表:函数的调用者给函数传递信息,如果没有参数小括号也不能省略。
函数调用的本质:实参形参赋值的过程。
函数参数
实参:在调用函数时给函数传递的数据,本质是值。
形参:在函数定义时小括号中的变量,本质是变量。
注意:参数必须按顺序传递,个数要一一对应(除默认)。
函数的返回值
def mysum(num, num2):
#将结构返回给函数的调用者
return num + num2
#执行完return语句,该函数就结束了,return后面的代码不执行
print("******************")
传递参数
值传递:传递的不可变类型
string,tuple,number
引用传递:传递的可变类型
list,dict,set
关键字参数
概念:允许函数调用时的顺序与定义时不同。
def myprint(str, age):
print(str, age)
#使用关键字参数
myprint(age = 18, str = "helloword")
默认参数
概念:调用函数时,如果没哟传递参数,则使用默认参数
以后要用默认参数,最好将默认参数放到左后去。
#定义默认参数
def myprint(str="helloword", age = 18):
print(str, age)
myprint()
不定长参数
概念:能处理比定义时更多的参数
#加了星号(*)的变量放在所有未命名的变量参数,如果在调用时没有指定参数,他就是一个空元祖
def func(name, *arr):
print(name)
for x in arr:
print(x)
#**代表键值队的参数字典。和*类似
def func2(**kwargs):
print(kwargs)
func2(x=1, y=2, z=3)
匿名函数
概念:不适用def这样的语句定义函数,使用lambda来创建匿名喊函数。
特点:
1、lambda只是一个表达式,函数体比def简单
2、lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
3、lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名参数的参数。
4、虽然lambda是一个表达式且看起来只能写一行,与c和c++内联函数不同。
格式:
#格式:
lambda 参数1,参数2。。。。。,参数n:expression
不错不错
页:
[1]