【发布时间】:2017-03-25 21:52:08
【问题描述】:
我正在构建一个接受四个参数的函数:xs(original list)、old、new 和 limit=None)。如果旧数字在列表中,则给定一个特定值(old),将其替换为新值并返回一个名为 new_xs 的新列表。
第四个参数limit是一个整数,表示允许的最大替换次数。我只需要替换old 的第一个限制出现,其余的保持不变。当limit==None 时,确实没有限制(我替换所有出现的old)。
负限或零限:不可替代
输入/输出示例:
xs=[1,2,3,4,5]
old= 2
new=100
new_xs=[1,100,3,4,5]
def replace(xs, old, new, limit=None):
new_xs=[]
for num in range(len(xs)):
if num==old:
new_xs.append(new)
return new_xs
如果有限制,我不确定如何让它停在限制处。
【问题讨论】:
-
请完整的堆栈跟踪。该代码不能抛出 indexerror
-
什么是完整的堆栈跟踪?抱歉,我是编程新手
-
运行程序时的输出副本。
-
>>> replace(xs, old, new, limit=None) Traceback(最近一次调用最后):文件“
”,第 1 行,在 文件“ ",第 5 行,在替换 IndexError: list index out of range >>> def replace(xs, old, new, limit=None): ... new_xs=[] ... for num in range(len(xs) ): ... if num ==old: ... new_xs.append(xs[new]) ... return new_xs >>> replace(xs, old, new, limit= None) Traceback (最近一次调用最后一次) :文件“ ”,第 1 行,在 文件“ ”,第 5 行,替换 IndexError: list index out of range -
new_xs.append(xs[new]): 这不是你发布的代码!!由于new=100和xs的大小要小得多,因此存在索引错误。
标签: python list function append