Python:映射到位

时间:2010-06-08 19:13:35

标签: python iterable map-function

我想知道是否有办法在某物上运行地图。 map的工作方式是它需要一个iterable并将一个函数应用于该iterable中的每个项目,从而生成一个列表。有没有办法让map修改可迭代对象本身?

4 个答案:

答案 0 :(得分:11)

如果您需要修改列表

,通常可以使用切片分配
mylist[:] = map(func, mylist)

答案 1 :(得分:3)

写起来很简单:

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

答案 2 :(得分:1)

你可以使用lambda(或def)或更好的列表理解(如果已经足够):

[ do_things_on_iterable for item in iterable ]

无论如何,如果事情变得太复杂,你可能想要更明确地使用for循环。

例如,你可以做类似的事情,但是这很丑陋:

[ mylist.__setitem__(i,thing) for i,thing in enumerate(mylist) ]

答案 3 :(得分:1)

只需编写明显的代码即可。

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