Python的lambda函数与排序
2008-06-19 23:13:34 by deepblue
前几天看到了一行求1000的阶乘的Python代码:
print reduce(lambda x,y:x*y, range(1, 1001))
一下子被python代码的精简与紧凑所折服,故对代码进行了简单的分析。
reduce与range都是Python的内置函数。
range(1,1001)表示生成1到1000的连续整数列表(List)。
reduce(functionA,iterableB),functionA为需要两个变量的函数,并返回一个值。iterableB为可迭代变量,如List等。reduce函数将B中的元素从左到右依次传入函数A中,再用函数A返回的结果替代传入的参数,反复执行,则可将B reduce成一个单值。在此,是将1到1000的连续整数列表传入lambda函数并用两个数的积替换列表中的数,实际的计算过程为:(...((1×2)×3)×4)×...×1000),最后的结果即1000的阶乘。
下面来介绍一下lambda函数。
lambda函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以用在任何需要函数的地方。下面的例子比较了传统的函数与lambda函数的定义方式:
>>> def f(x,y):
... return x*y
...
>>> f(2,3)
>>> g = lambda x,y: x*y
>>> g(2,3)
可以看到,两个函数得到的结果一样,而对于实现简单功能的函数来说,使用lambda函数来定义更加精简灵活,还可以直接把函数赋值给一个变量,用变量名来表示函数名。
其实lambda函数在很多时候都是不需要赋值给一个变量的(如前文中求阶乘的过程)。
使用lambda函数还有一些注意事项:
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
lambda 函数不能包含命令,包含的表达式不能超过一个。
下面简单演示一下如何使用lambda函数实现自定义排序。
class People:
age=0
gender='male'
def __init__(self, age, gender):
self.age = age
self.gender = gender
def toString(self):
return 'Age:'+str(self.age)+'\tGender:'+self.gender
List=[People(21,'male'),People(20,'famale'),People(34,'male'),People(19,'famale')]
print 'Befor sort:'
for p in List:
print p.toString()
List.sort(lambda p1,p2:cmp(p1.age,p2.age))
print '\nAfter ascending sort:'
for p in List:
print p.toString()
List.sort(lambda p1,p2:-cmp(p1.age,p2.age))
print '\nAfter descending sort:'
for p in List:
print p.toString()
上面的代码定义了一个People类,并通过lambda函数,实现了对包含People类对象的列表按照People的年龄,进行升序和降序排列。运行结果如下:
Befor sort:
Age:21 Gender:male
Age:20 Gender:famale
Age:34 Gender:male
Age:19 Gender:famale
After ascending sort:
Age:19 Gender:famale
Age:20 Gender:famale
Age:21 Gender:male
Age:34 Gender:male
After descending sort:
Age:34 Gender:male
Age:21 Gender:male
Age:20 Gender:famale
Age:19 Gender:famale
参考资料:
http://www.woodpecker.org.cn/diveintopython/power_of_introspection/lambda_functions.html
http://docs.python.org/lib/built-in-funcs.html
from http://ipie.blogbus.com/logs/23243382.html
分享到:
相关推荐
### 详解Python的Lambda函数与排序 #### Lambda函数概述 Lambda函数是Python中的一种特殊函数类型,它允许用户快速地创建简洁的匿名函数。这种函数主要用于编写简单的、一次性的、无需命名的操作。Lambda函数通常...
### Python sorted 函数详解:Key参数,以及lambda 函数与常规写法的区别 #### Python sorted 函数概述 在Python中,`sorted()` 是一个非常有用的内置函数,它可以帮助我们对列表、元组或其他可迭代对象中的元素...
### Python Lambda 函数及其应用场景 在 Python 编程语言中,`lambda` 函数是一种特殊类型的函数,它允许用户创建简单、一次性使用的匿名函数。这种函数通常被用来执行简单的任务,比如数学运算或是条件判断等。 #...
Python中的Lambda函数是一种特殊的函数类型,通常被称作匿名函数,因为它们没有一个具体的函数名。在Python中定义函数有多种方式,最常见的是使用def关键字来定义普通函数,除此之外,还可以使用lambda表达式来快速...
#### Lambda函数 `lambda`函数是Python中的一种特殊函数,它允许程序员快速地创建小型匿名函数。这种函数之所以被称为“匿名”,是因为它们通常不会被赋予一个名字,而是直接作为表达式的一部分使用。`lambda`函数...
Lambda函数是Python中的一种特殊函数类型,也称为匿名函数。这种函数与常规定义的函数不同之处在于它不需要一个明确的名称,因此可以在需要的地方直接定义并立即使用。尽管Python语言本身提供了多种方式来实现相同的...
lambda函数通常用于那些逻辑不复杂的操作,如简单的数学运算、数据过滤、排序等。 ### 无参数的lambda函数 当lambda函数不接受任何参数时,我们可以这样定义它: ``` f = lambda: 'python lambda!' ``` 这个函数不...
lambda 函数还可以与 Python 内置函数,如 sorted 函数、map 函数和 filter 函数,联合使用。 ### 使用 sorted 函数排序列表 ``` l = [{'a': 1, 'b': 41}, {'a': 1111, 'b': 24}, {'a': 1111, 'b': 32}] l_s = ...
与常规的`def`关键字定义的函数不同,lambda函数无需名称,它们在定义时直接返回结果,表达式的结果即为函数的返回值。在Python中,lambda函数通过`lambda`关键字来创建。 ### 一、lambda函数的语法 lambda函数的...
**Python3 Lambda 函数深入解析** Lambda 函数是 Python3 中一种简洁的、匿名的函数定义方式,它常用于创建一次性使用的简单函数。在 Python 的世界里,lambda 函数提供了一种快速定义单行、小型函数的方法,尤其...
例如,如果有一个数字列表,并希望得到一个每个元素平方后的列表,可以使用map()函数配合一个lambda函数来实现。 2. set()函数: set()函数用于创建一个集合,它是一个无序且元素不可重复的集合类型。集合(set)在...
Lambda函数可以接受任意数量的参数,但只能有一个表达式。 #### 按键排序 按键排序是指按照字典的键(Key)进行排序。在Python中,可以使用`sorted()`函数配合`lambda`表达式来实现这一需求。 **代码示例:** ```...
例如,在Python的列表排序操作`sorted()`中,我们可以使用Lambda函数作为key参数来指定排序依据: ```python numbers = [3, 1, 4, 1, 5, 9] sorted_numbers = sorted(numbers, key=lambda x: x) print(sorted_...
在Python编程中,`lambda`表达式是一种简洁的创建匿名函数的方式,它可以在需要短小、一次性使用的函数时派上用场。`lambda`表达式的语法结构是`lambda arguments: expression`,其中`arguments`是函数的参数,`...
在Python中,Lambda函数常与高阶函数如`map()`、`filter()`和`reduce()`结合使用。`map()`函数接收一个函数和一个或多个序列作为参数,将函数依次应用到序列的每个元素上,返回一个新列表。`filter()`函数则根据提供...
与传统的`def`定义的函数不同,Lambda函数无需指定名称,而是通过一个表达式来定义其功能。这种简洁性使得Lambda函数在某些特定场合非常有用,尤其是在函数式编程和创建简单的回调函数时。 1. **函数式编程**: 在...
在Python的`sorted()`函数中,你可以提供一个key参数,这个参数可以是一个lambda函数,用来指定排序依据。比如,根据字符串长度排序: ```python words = ['apple', 'banana', 'cherry'] sorted_words = sorted...
博主的原文:lambda表达式sorted()函数目录:Python3中`sorted()函数`与`lambda表达式`原理解析问题描述原理解析附:原文基础知识lambda表达式sorted 函数问题描述很多小伙伴面对这样的排序,很是懵逼:# 预按照每个...