Python: 原地映射
我在想有没有办法让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)