2024-04-23 07:46:02 发布
网友
我试图创建一个函数来更新现有的参数(主要是出于好奇):
def inplaceUpdate(f, inputs): for i in inputs: i = f(i)
我有三个输入:
x = 1 y = 2 z = 3
函数f:
f
f = lambda i: i**2
我想运行以下代码:
inplaceUpdate(f, [x, y, z])
然后我想让x、y和z的值原地改变。这可能吗?你知道吗
x
y
z
x = 1 y = 4 z = 9
在Python中,整数是不可变的。有个主题问题here。你知道吗
其思想是不能更改引用x、y和z的值。这意味着如果你这样做:
x = 2 y = 3 z = 4 some_func([x, y, z])
不可能some_func改变变量x、y、z的值。你知道吗
some_func
但是,列表是可变的,您可以执行以下操作:
def some_func(l): l[:] = [i*2 for i in l] l = [2, 3, 4] some_func(l) print l # the array has changed
这确实会改变名单。这是因为操作l[:]=...分配给列表的包含,而不是重新分配引用,即l=...。你知道吗
l[:]=...
l=...
您还可以使用列表理解来实现这一点。它比地图更像Python,但本质上是一样的。你知道吗
input = [1, 2, 3] ls = [x**2 for x in input]
看来,你要做的是绘制一个列表。有一个漂亮的内置函数map
map
# Declare lambda somewhere f = lambda i: i**2 # Map your inputs input = [1, 2, 3] result = map(f, input)
在Python中,整数是不可变的。有个主题问题here。你知道吗
其思想是不能更改引用
x
、y
和z
的值。这意味着如果你这样做:不可能
some_func
改变变量x
、y
、z
的值。你知道吗但是,列表是可变的,您可以执行以下操作:
这确实会改变名单。这是因为操作
l[:]=...
分配给列表的包含,而不是重新分配引用,即l=...
。你知道吗您还可以使用列表理解来实现这一点。它比地图更像Python,但本质上是一样的。你知道吗
看来,你要做的是绘制一个列表。有一个漂亮的内置函数
map
相关问题 更多 >
编程相关推荐