python学习笔记(九)函数返回多个值,列表生成式,循环多个变量,入参格式声明
一、函数返回多个值
1、函数如果返回多个值的话,它会把这几个值放到一个元组里面
2、函数如果返回多个值的话,也可以用多个变量来接收
def say(): num1 = 1 num2 = 2 num3 = 3 return num1,num2,num3 print(say()) #函数如果返回多个值的话,它会把这几个值放到一个元组里面,(1, 2, 3) res1,res2,res3 = say()#返回多个值时,可以用多个变量接收 print(res1) #1 print(res2) #2 print(res3) #3
二、列表生成式
l = [i for i in range(1,101,2)]
列表生成式,只能用在列表中
先写循环,再把循环里的i拿出来,可以做一些简单的操作(补零、转换为字符串等)
import random red_num = random.sample(range(1,34),6) new_num = [] # for num in red_num: # tmp = str(num).zfill(2) # new_num.append(tmp) new_num = [str(num).zfill(2) for num in red_num]#列表生成式 print(new_num)#['16', '20', '07', '18', '13', '01']
生成100以内的奇数
l = [i for i in range(1,101,2)]#外面是[]就是一个list print(l)
三、生成器
l1 = (i for i in range(1,11,2))
将列表生成式中的[ ]换成( ),打印生成器本身会显示generator而不是列表
l = [i for i in range(1,11,2)]#外面是[]就是一个list #以空间换时间,内存占用大,但是不用再计算省cpu #list它是把所有的元素都放在内存里面的,这里就会申请5块内存空间 print(l)#[1, 3, 5, 7, 9] l1 = (i for i in range(1,11,2))#外面是()的话,就是生成器 #generator生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面 #generator性能比list好一些,只申请一块内存空间,每次调用再去根据规则算 print(l1) #<generator object <genexpr> at 0x00000000030FE4C0> for i in l1: print(i) #1 3 5 7 9
四、三元表达式
c = a if a > b else b
a = 5 b = 3 # if a > b: # c = a # else: # c = b c = a if a > b else b #如果a大于b的话,a = c,否则 c =b print(c)
五、循环二维数组
l = [ [1,2,3,4], ['a','b','c','d'] ] for a,b,c,d in l:#二维数组里有多个元素,可以这么循环 print(a) #1,a print(b) #2,b
六、声明入参格式
仅仅是为了代码易读,并不会强制转换类型
def my(name:str):#告诉别人name是str,但不会强制转化,l:list告诉别人传入是list print(name) my('hello') my(['123',123])#入参是list也可以,['123', 123]