我在想是否有一种方法可以对某个对象运行map函数。 map函数的工作方式是将可迭代对象中的每个项应用于一个函数,生成一个列表。是否有一种方法使map函数修改可迭代对象本身?
我在想是否有一种方法可以对某个对象运行map函数。 map函数的工作方式是将可迭代对象中的每个项应用于一个函数,生成一个列表。是否有一种方法使map函数修改可迭代对象本身?
如果需要就地修改列表,使用切片赋值通常是可以的。
mylist[:] = map(func, mylist)
for i, item in enumerate(mylist): mylist[i] = func(item)
相同吗? - warvariucmylist[:] = (func(item) for item in mylist)
。如果你已经在其他地方定义了func
,那么应该选择更易读的方式。 - John La Rooymylist[:] = map(func, mylist)
和 mylist[:] = (func(item) for item in mylist)
是否等同于 for i, item in enumerate(mylist): mylist[i] = func(item)
? - warvariucmylist = list(map(func, mylist))
。 - kakyo这段代码很简单:
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
[ do_things_on_iterable for item in iterable ]
无论如何,如果事情变得太复杂,您可能希望使用for循环更明确。
例如,您可以做类似的事情,但在我看来它很丑陋:
[ mylist.__setitem__(i,thing) for i,thing in enumerate(mylist) ]
只需编写明显的代码即可完成它。
for i, item in enumerate(sequence):
sequence[i] = f(item)