在Python中使用map函数

0 投票
5 回答
540 浏览
提问于 2025-04-17 03:20

如果你有以下代码,它是怎么按照文档中的说明来工作的呢:map(function, iterable,...)?

x = sorted(map(int, dat[0].split()))

那这个int是一个函数吗?如果是的话,为什么不直接把它写成函数的样子呢?

5 个回答

1

可以这样理解

def map( function, iterable ):
    return ( function(x) for x in iterable )

x = sorted(map(int, dat[0].split())) 这段代码中,int 是被“命名”的,而不是被“计算”的。也就是说,这段代码把一个函数对象传给了 map 函数。接下来,map 函数会去执行这个给定的函数。

3

在你的例子中,dat[0] 是一个字符串,而 split() 方法会把这个字符串按照空格分开,生成一个字符串列表。

比如说:

"1 11".split()

返回的结果是:

["1", "11"]

map 函数有两个输入参数:

  1. 第一个参数是可以被调用的东西(在 Python 中我们称之为 可调用对象),比如一个函数。int 虽然不是真正的函数,但它也是一种可调用的东西(在 Python 里叫做 对象)。比如说,int("3") 会返回 3。所以当你把 int 应用到一个字符串上时,它会尝试把这个字符串转换成一个整数,并返回这个整数值。

  2. 第二个参数是你可以遍历的东西,在你的例子中就是一个列表。

当你调用 map 函数时,第一个参数会应用到第二个参数中的所有元素上。

所以:

map(int, ["1", "11"])

返回的结果是:

[1, 11]

如果你把我刚才解释的结合起来,你就能明白:

map(int, "1 11".split())

返回的结果是:

[1, 11]
3

int 是一个构造函数,所以它是可以被调用的,这样你就可以把它和 map 一起使用。

撰写回答