`
54yuri
  • 浏览: 28156 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python的lambda函数与排序

阅读更多
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函数与排序

    ### 详解Python的Lambda函数与排序 #### Lambda函数概述 Lambda函数是Python中的一种特殊函数类型,它允许用户快速地创建简洁的匿名函数。这种函数主要用于编写简单的、一次性的、无需命名的操作。Lambda函数通常...

    Python sorted 函数:Key参数,以及lambda 函数与常规写法区别

    ### Python sorted 函数详解:Key参数,以及lambda 函数与常规写法的区别 #### Python sorted 函数概述 在Python中,`sorted()` 是一个非常有用的内置函数,它可以帮助我们对列表、元组或其他可迭代对象中的元素...

    python lambda函数及三个常用的高阶函数

    ### Python Lambda 函数及其应用场景 在 Python 编程语言中,`lambda` 函数是一种特殊类型的函数,它允许用户创建简单、一次性使用的匿名函数。这种函数通常被用来执行简单的任务,比如数学运算或是条件判断等。 #...

    Python的Lambda函数用法详解

    Python中的Lambda函数是一种特殊的函数类型,通常被称作匿名函数,因为它们没有一个具体的函数名。在Python中定义函数有多种方式,最常见的是使用def关键字来定义普通函数,除此之外,还可以使用lambda表达式来快速...

    详解python中的lambda与sorted函数

    #### Lambda函数 `lambda`函数是Python中的一种特殊函数,它允许程序员快速地创建小型匿名函数。这种函数之所以被称为“匿名”,是因为它们通常不会被赋予一个名字,而是直接作为表达式的一部分使用。`lambda`函数...

    python-lambda用法.pdf

    Lambda函数是Python中的一种特殊函数类型,也称为匿名函数。这种函数与常规定义的函数不同之处在于它不需要一个明确的名称,因此可以在需要的地方直接定义并立即使用。尽管Python语言本身提供了多种方式来实现相同的...

    Python lambda函数基本用法实例分析

    lambda函数通常用于那些逻辑不复杂的操作,如简单的数学运算、数据过滤、排序等。 ### 无参数的lambda函数 当lambda函数不接受任何参数时,我们可以这样定义它: ``` f = lambda: 'python lambda!' ``` 这个函数不...

    python基础(补充):lambda匿名函数.pdf

    lambda 函数还可以与 Python 内置函数,如 sorted 函数、map 函数和 filter 函数,联合使用。 ### 使用 sorted 函数排序列表 ``` l = [{'a': 1, 'b': 41}, {'a': 1111, 'b': 24}, {'a': 1111, 'b': 32}] l_s = ...

    Python3匿名函数lambda介绍与使用示例

    与常规的`def`关键字定义的函数不同,lambda函数无需名称,它们在定义时直接返回结果,表达式的结果即为函数的返回值。在Python中,lambda函数通过`lambda`关键字来创建。 ### 一、lambda函数的语法 lambda函数的...

    关于Python3 lambda函数的深入浅出

    **Python3 Lambda 函数深入解析** Lambda 函数是 Python3 中一种简洁的、匿名的函数定义方式,它常用于创建一次性使用的简单函数。在 Python 的世界里,lambda 函数提供了一种快速定义单行、小型函数的方法,尤其...

    8个超级好用的Python内置函数.pdf

    例如,如果有一个数字列表,并希望得到一个每个元素平方后的列表,可以使用map()函数配合一个lambda函数来实现。 2. set()函数: set()函数用于创建一个集合,它是一个无序且元素不可重复的集合类型。集合(set)在...

    Python使用lambda表达式对字典排序操作示例

    Lambda函数可以接受任意数量的参数,但只能有一个表达式。 #### 按键排序 按键排序是指按照字典的键(Key)进行排序。在Python中,可以使用`sorted()`函数配合`lambda`表达式来实现这一需求。 **代码示例:** ```...

    python匿名函数的应用.doc

    例如,在Python的列表排序操作`sorted()`中,我们可以使用Lambda函数作为key参数来指定排序依据: ```python numbers = [3, 1, 4, 1, 5, 9] sorted_numbers = sorted(numbers, key=lambda x: x) print(sorted_...

    python lambda表达式在sort函数中的使用详解

    在Python编程中,`lambda`表达式是一种简洁的创建匿名函数的方式,它可以在需要短小、一次性使用的函数时派上用场。`lambda`表达式的语法结构是`lambda arguments: expression`,其中`arguments`是函数的参数,`...

    lambda-code-analysis:Lambda函数分析python源代码-Python source code analysis

    在Python中,Lambda函数常与高阶函数如`map()`、`filter()`和`reduce()`结合使用。`map()`函数接收一个函数和一个或多个序列作为参数,将函数依次应用到序列的每个元素上,返回一个新列表。`filter()`函数则根据提供...

    Python何时应该使用Lambda函数

    与传统的`def`定义的函数不同,Lambda函数无需指定名称,而是通过一个表达式来定义其功能。这种简洁性使得Lambda函数在某些特定场合非常有用,尤其是在函数式编程和创建简单的回调函数时。 1. **函数式编程**: 在...

    python中的lambda表达式的用法

    在Python的`sorted()`函数中,你可以提供一个key参数,这个参数可以是一个lambda函数,用来指定排序依据。比如,根据字符串长度排序: ```python words = ['apple', 'banana', 'cherry'] sorted_words = sorted...

    Python3中`sorted()函数`与`lambda表达式`原理解析

    博主的原文:lambda表达式sorted()函数目录:Python3中`sorted()函数`与`lambda表达式`原理解析问题描述原理解析附:原文基础知识lambda表达式sorted 函数问题描述很多小伙伴面对这样的排序,很是懵逼:# 预按照每个...

Global site tag (gtag.js) - Google Analytics