该程序必须用参数中也给出的数字替换列表中的两个数字。我无法更改参数,但也可以创建其他函数。另外,我必须使用递归。到目前为止,我已经弄清楚了如何用递归进行替换,但是我对计数感到困惑。每次尝试时,我似乎都无法仅用“ y”替换前两个出现的“ x”,相反,我总是用“ y”替换每个“ x”。编辑:而且我不能使用全局变量。
def replaceFirstTwo(x,y,lst):
if lst == []:
return []
else:
if lst[0] == x:
return [y] + replaceFirstTwo(x,y,lst[1:])
else:
return [lst[0]]+ replaceFirstTwo(x,y,lst[1:])
正确的结果应如下所示:
replaceFirstTwo(1,2,[5,1,2,3,1,1])
[5, 2, 2, 3, 2, 1]
如果x只能是正数,则可以使用负数来表示它是第二次运行该函数。在将x更改为要表示的内容之前,请勿执行任何操作。
我已经修改了您的函数,因此可以执行此操作,但是它将不适用于x的负值,因为xabs(x)
将使其为正。
def replaceFirstTwo(x,y,lst):
if lst == []:
return []
else:
if x is not None:
if lst[0] == abs(x):
if x > -1:
x = -x
else:
x = None
return [y] + replaceFirstTwo(x,y,lst[1:])
else:
return [lst[0]]+ replaceFirstTwo(x,y,lst[1:])
else:
return [lst[0]]+ replaceFirstTwo(x,y,lst[1:])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句