Python之匿名函数

当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
匿名函数的关键字为 lambda
冒号前面是 形参 冒号后面是返回值

from functools import reduce

def add(x, y):
    return x + y
print(reduce(add, range(10)))
===========用匿名函数=============
print(reduce(lambda x, y: x + y, range(10)))


def mypow(x):
    return x ** 2  
print(list(map(lambda x: x ** 2, range(5))))

 def isood(num):
    return num % 2 == 0  
print(list(filter(lambda x: x % 2 == 0, range(100))))

45
45
[0, 1, 4, 9, 16]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]

—————练习—————

#(2018-携程-春招题)题目需求:
给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
在原始数组上进行移动操作, 勿创建新的数组;

输入:

第一行是数组长度, 后续每一行是数组的一条记录;
4
0 =2
7 =1
0 =2
2 =1

输出:

调整后数组的内容;
7
2
0
0
方法一:

n=int(input('输入数组长度:'))
s=[]
for i in range(n):
    s.append(int(input()))
for j in range(n):
    if s[j]==0:
        for i in range(j,n-1):
            t=s[i]
            s[i]=s[i+1]
            s[i+1]=t
print(s)

方法二:
注意:定义的函数应该在调用前,要不会报错

def move_zore(item):
    if item == 0:
        return 2
    else:
        return 1

n = int(input())
li = [int(input()) for i in range(n)] 
for i in sorted(li,key=move_zore):
    print(i)

————练习————-

有一个整数列表(10个元素),要求调整元素的顺序把奇数放在前面 偶数放在后面
方法一:

import random
def sirqq(x):
    if x % 2 == 0:
        return 2
    else:
        return 1

s = [random.randint(1, 10) for i in range(10)]
print(sorted(s, key= sirqq))

方法二:

import random
s = [random.randint(1,10) for i in range(10)]
print(sorted(s,key=lambda  x:2 if x%2 == 0 else 1))
    原文作者:若无其事的苹果
    原文地址: https://blog.csdn.net/qq_36016375/article/details/90708851
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞