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

Posted chenhongl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

 

 

 

 

 

 

 

 

以上是关于lambda列表生成式字典转list排序的主要内容,如果未能解决你的问题,请参考以下文章

Python3匿名函数字典排序生成式与生成器装饰器简介

十函数——匿名函数推导式

python 玩转字符串,字典,列表排序,查找,去重

推导式(列表, 集合, 字典), 生成器

推导式(列表, 集合, 字典), 生成器

匿名函数生成式三元运算