首页 > 编程语言 > 详细

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

时间:2018-05-04 11:13:27      阅读:574      评论:0      收藏:0      [点我收藏+]

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排序

原文:https://www.cnblogs.com/chenhongl/p/8989399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!