Python: 原地映射

18 投票
4 回答
17769 浏览
提问于 2025-04-15 23:42

我在想有没有办法让map对某个东西进行操作。map的工作原理是,它会接收一个可迭代的对象(比如列表),然后对这个对象里的每一个元素应用一个函数,最后生成一个新的列表。那么,有没有办法让map直接修改这个可迭代的对象本身呢?

4 个回答

1

只需要写出显而易见的代码来完成它。

for i, item in enumerate(sequence):
    sequence[i] = f(item)
4

写起来很简单:

def inmap(f, x):
    for i, v in enumerate(x):
            x[i] = f(v)

a = range(10)
inmap(lambda x: x**2, a)
print a
15

如果你需要直接修改一个列表,使用切片赋值通常是可以的。

mylist[:] = map(func, mylist)

撰写回答