我正在做一个程序,在那里我可以修复一个列表的序列,序列后面是一个2的差。在这个程序中,如果差值小于2,我需要替换/更改某个数字。好吧,我已经完成了大部分的部分,但问题是我不能正确地替换它,而且由于我不能在这个过程中更改数字,所以我的输出也会出错。你知道吗
list_1 = [1,2,5]
for i in range(1, len(list_1)):
htl = list_1[i]-list_1[i-1]
if not htl == 2:
list_1[i-1] += 2
print(list_1[i-1])
输出为:
3
4
但这是错误的,正确的输出是:
3
因为我只需要把数字2改成3就可以了。你知道吗
我在我的代码中所做的是,我向后减去以发现差异。如果有差异,我试着把它减去的数字加上2,然后改变被减去的数字。但在我的程序中,我在替换上遇到了问题。例如(减法从索引1开始-索引0,索引2-索引1,然后继续):2-1=1,所以它没有明显地遵循顺序,我试图用3替换'list_1'中的2(通过将2加到索引1被减法的数字上)。我不能替换这个数字,因为我不能替换它,所以下一个输出不应该出现,因为只需要一个更改。你知道吗
我的方法可能真的很纠结,但这是我能想到的最好的方法,如果有更快的方法,我会非常感谢你的帮助。但我还是喜欢修改我的代码,一般的想法是按照2的顺序。你知道吗
如果我能理解你的解释,你想改信
list_1 = [1,2,5]
到list_1 = [1,3,5]
未给出所需结果的行是:
list_1[i-1] += 2
for循环第一次迭代时,会生成
list_1 = [3,2,5]
。你知道吗第二次迭代时,它生成
list_1 = [3,4,5]
。你知道吗更改行:
list_1[i-1] += 2
收件人:
list_1[i] = list_1[i-1] + 2
更新:
你说如果差值小于2,你就要改变。你知道吗
考虑将
if not htl ==2:
条件更改为if htl < 2
。这将捕捉到两个相等的连续元素的情况。它读起来也更好。你知道吗更新2:
为了捕捉列表中只有零个或一个元素的错误,我建议您在循环之前放置一个条件。
if len(list_1) > 1:
将是一个很好的开始,否则索引将引发索引错误。你知道吗小于2? 我还认为您更改的是-1列表值,而不是当前索引。你知道吗
这样行吗?你知道吗
归因错误:
输出:
但最终,你想要的只是一个从一个初始点开始的序列,步骤是2,并且有一定数量的点
输出:
相关问题 更多 >
编程相关推荐