Python中的map()
和reduce()
是常用的清洗数据的函数。map()
函数能够对一个列表或数组中的每个元素进行操作,而reduce()
可以从列表或数组中的第一个元素开始,通过操作后将结果不断累加,最终得到一个单一的结果。
map()函数
map()
函数的基本语法为:
map(function, iterable, ...)
其中,function
表示对每个元素要执行的函数,iterable
则表示待处理的列表或序列。map()
函数会对iterable
中的每个元素依次执行function
函数,并返回一个新的列表作为结果。
例如,我们可以使用map()
函数将一个字符串列表中的每个字符串转化为大写:
str_list = ['hello', 'world', 'python']
upper_list = list(map(lambda x:x.upper(), str_list))
print(upper_list)
输出结果为:
['HELLO', 'WORLD', 'PYTHON']
在上面的例子中,我们使用了lambda
函数来将每个字符串转化为大写形式,然后使用list()
函数将结果转化为列表。
另一个常见的应用是对列表中的数字进行加倍操作:
num_list = [1, 2, 3, 4, 5]
double_list = list(map(lambda x:x*2, num_list))
print(double_list)
输出结果为:
[2, 4, 6, 8, 10]
reduce()函数
reduce()
函数用于对列表或序列中的元素进行累加操作,即对列表中的元素进行求和、求积等运算。
reduce()
函数的基本语法为:
reduce(function, sequence[, initial]) -> value
function
表示对两个元素进行操作的函数,sequence
表示待处理的列表或序列,initial
表示初始值。reduce()
函数会从sequence
的第一个元素开始,逐个对相邻的两个元素执行function
函数,直到遍历完整个列表,最终返回一个单一的结果。
例如,我们可以使用reduce()
函数计算一个列表中所有元素的乘积:
from functools import reduce
num_list = [1, 2, 3, 4, 5]
product = reduce(lambda x,y:x*y, num_list)
print(product)
输出结果为:
120
另一个常见的应用是对列表中的数字进行求和:
from functools import reduce
num_list = [1, 2, 3, 4, 5]
sum = reduce(lambda x,y:x+y, num_list)
print(sum)
输出结果为:
15
需要注意的是,在使用reduce()
函数时,如果列表为空,则会抛出TypeError
异常。因此,在使用前需要进行判断或者提供初始值。例如:reduce(lambda x,y:x+y, [], 0)
。
以上就是Python中map()
和reduce()
函数的使用方法的完整攻略。