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