Python的lambda函数与排序
前几天看到了一行求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函数的定义方式:
1
>>>
def
f
(
x
,y):
2
...
return
x
*
y
3
...
4
>>>
f
(
2,3
)
5
6
6
>>>
g
=
lambda
x
,y:
x
*
y
7
>>>
g
(
2,3
)
8
6
可以看到,两个函数
得到的结果一样,而对于实现简单功能的函数来说,使用lambda函数来定义更加精简灵活,还可以直接把函数赋值给一个变量,用变量名来表示函数名。
其实lambda函数在很多时候都是不需要赋值给一个变量的(如前文中求阶乘的过程)。
使用lambda函数还有一些注意事项:
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
lambda 函数不能包含命令,包含的表达式不能超过一个。
下面简单演示一下如何使用lambda函数实现自定义排序。
01
class
People
:
02
age
=
0
03
gender
=
'male'
04
05
def
__init__
(
self
,
age
,
gender
):
06
self
.
age
=
age
07
&
相关文档:
正则表达式是搜索、替换和解析复杂字符模式的一种强大而标准的方法.
正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.字符串也有很多方法,可以进行搜索 (index、find 和 count)、替换 (replace) 和解
析 (split),但它们仅限于处理最简单的情况
re 模块使 P ......
Python 元组
元组和列表十分类似,只不过元组和字符串一样是 不可变的 即你不能修改元组。元组通过圆括号中用逗号分割的项目定义。元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。
使用元组
例9.2 使用元组
#!/usr/bin/python
# Filename: using_tuple.py
zoo = ('wo ......
Python 序列
列表、元组和字符串都是序列,但是序列是什么,它们为什么如此特别呢?序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。
使用序列
例9.5 使用序列
#!/usr/bin/python
# Filename: seq.py
shoplist ......
不多说了,直接看代码吧!
import os
path = 'e:/Download/'
kzm = []
kzmTemp = set()
kzmTemp2 = []
dict = {}
for root,dirs,files in os.walk(path):
for file in files:
ext = os.path.splitext(file)[1][1:]
  ......
字典(Dictionary)是一种映射结构的数据类型,由无序的“键-值对”组成。字典的键必须是不可改变的类型,如:字符串,数字,tuple;值可
以为任何python数据类型。
1、新建字典
>>> dict1={}
#建立一个空字典
>>> type(dict1)
<ty ......