lambda、列表生成式、字典转list排序

1、函数返回多个值:

  1)函数如果return多个值的话,会把返回的这几个值放在一个元组里面

def say():
    num1 = 1
    num2 = 2
    num3 = 3
    return num1,num2,num3
res = say()
print(res)

>>> (1, 2, 3)

  2)函数如果return多个值的话,可以用多个变量来分别接收

def say():
    num1 = 1
    num2 = 2
    num3 = 3
    return num1,num2,num3
res1,res2,res3 = say()
print(res1)   #>>>1
print(res2)   #>>>2
print(res3)   #>>>3

2、lambda:匿名函数,函数功能很简单,只用一次,不需要定义

res = lambda x:x+1  #冒号前面的是返回值,冒号后面是函数体,也是函数的处理逻辑
print(res(1))

>>> 2

3、列表生成式(列表)

l = [i for i in range(1,101,2)]

l = [i for i in range(1,101) if i%2==1]  #或者这样写
print(l)

>>>[1, 3, 5, 7, 9...]

如果列表生成式外面是()的形式:l就不是list了,而是一个生成器

l = (i for i in range(1,101) if i%2==1)
print(l)  #l是一个生成器

#print(l.__next__())   #生成器调用一次取一个值

for i in l:   
    print(i)

>>> <generator object <genexpr> at 0x00BFD8C8>
>>>1 3 5 7 9...

#生成器每次循环时会按照规则只计算出一个元素,放在内存中,比list省内存

#list是把所有的元素都放在内存里面

4、三元表达式

a = 5
b = 4
c = a if a>b else b   #三元表达式
print(c)

不用三元表达式就是如下:

a = 5
b = 4
if a>b:
    c = a
else:
    c = b
print(c)

5、字典是无序的,直接对字典排序是不存在的。先要把字典转成list再排序

#sorted():每次自动循环取二维数组里面的元素

d = {'a':5,'b':2,'c':3}
print(d.items())    #得到一个二维数组
res = sorted(d.items(),key=lambda x:x[0]) #key=字典的key值,进行排序

res = sorted(d.items(),key=lambda x:x[1])  #根据字典的value进行排序
print(res)

>>> dict_items([('b', 2), ('a', 5), ('c', 3)])
>>> [('a', 5), ('b', 2), ('c', 3)]

循环时取多个:

l = [ [1,2,3],[3,4,5],[5,6,7] ]
for a,b,c in l:  #a,b,c是3个,上面的小list每个也要包含3个元素?
    print(a,b,c)

6、定义函数时,告诉别人应该传什么类型的参数

def is_float(s:str):
    pass

 

猜你喜欢

转载自www.cnblogs.com/chenhongl/p/8989399.html