如何使用map函数修改applyToEach函数实现列表元素取绝对值
使用map修改applyToEach函数的实现方案
修改后的核心代码
替换原有循环逻辑后的applyToEach函数如下,完全保留原函数原地修改列表的特性:
def applyToEach(L, f): # map返回迭代器,转列表后通过切片赋值实现原地修改 L[:] = list(map(f, L))
完整测试代码
和原测试逻辑完全一致:
def applyToEach(L, f): L[:] = list(map(f, L)) L = [1, -2, 3.333] print('L = ', L) print('Apply abs to each element of L.') applyToEach(L, abs) print('L = ', L)
输出结果
和原实现的输出完全相同:
L = [1, -2, 3.333] L = [1, 2, 3.333]
注意事项
不要直接写L = list(map(f, L)),这种写法只会修改函数内部的局部变量L,不会修改外部传入的原列表,无法达到原函数原地修改的效果。使用L[:]切片赋值会直接替换原列表的所有元素,外部变量也会同步更新。
内容的提问来源于stack exchange,提问作者Rushi
相关产品推荐
相关产品推荐

