Python-lambda函数/方法

lambda是python的保留字,也是一个特殊的函数。用法如下:
lambda argument_list: expression
其中argument_list是参数列表(等同于def func(args)中的args),expression就是函数语句,单行表达式,用到的参数需要先定义。

lambda函数经常被用于赋值给变量(简化书写),例如:
add = lambda x,y: x+y
虽然用处较少,但是当lambda作为python内置函数的参数时,会让人有一种原来如此的惊艳感。下面以一道排序题为例:

编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y

思路是一遍遍历输入字符串,将字母与非字母分离并按位置存储非字母在列表中。对于字母排序时,如果直接用list.sort()所有大写字母都会在前,此时需要利用sort()的参数key 来指定排序依照的方法,代码如下:


a = input()
res, ch = [False] * len(a), []

for i, v in enumerate(a):
    if v.isalpha():
        ch.append(v)
    else:
        res[i] = v
print(ch, res) 
# 使用lambda表达式排序,暴力有效。
ch.sort(key=lambda c: c.lower())
# 将ch中对应的字符填到res中。
for i, v in enumerate(res):
    if not v:
        res[i] = ch[0]
        ch.pop(0)
print("".join(res))

你可能感兴趣的:(python)