什么python内置函数可以将某些函数应用于就地列表的每个元素?

我有函数sqr(n)和 list array。是否有 python 内置函数将sqr(n)应用于数组的每个元素就地(元素在数组内更改)?还需要使用map()函数或其他内置函数的一些技巧。

当然,这可以使用map()函数来完成,但它会创建一个迭代器,并且您会得到一个新列表(旧列表不会改变):

def sqr(n):
    return n ** 2

array = [1, 2, 3, 4, 5]
array = list(map(sqr, array)) # have to reassign name to new list but elements don't change in old one.
print(array) # output: [1, 4, 9, 16, 25]

我想要这样的东西:

def sqr(n):
    return n ** 2

array = [1, 2, 3, 4, 5]
some_built_in_function(sqr, array)
print(array) # output: [1, 4, 9, 16, 25]

回答

没有内置函数,但您可以使用map和 切片分配来完成相同的结果。

array[:] = map(sqr, array)

(如果你需要一个表达式而不是一个语句,你可以使用怪物

array.__setitem__(slice(None), map(sqr, array))

这基本上是切片分配的实现方式。)


以上是什么python内置函数可以将某些函数应用于就地列表的每个元素?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>