Python map()和reduce()清洗数据

  • Post category:Python

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()函数的使用方法的完整攻略。