如何在使用Python 3的过程中更改数组中的元素?
我正在做一个程序,我可以修正一个列表的顺序,这个顺序后面是一个差2。在这个程序中,如果差值小于2,我需要替换/更改某个数字。嗯,我已经完成了大部分的部分,但问题是我不能正确地替换它,而且因为我不能在这个过程中更改数字,所以我的输出结果也是错误的如何在使用Python 3的过程中更改数组中的元素?,python,python-3.x,list,Python,Python 3.x,List,我正在做一个程序,我可以修正一个列表的顺序,这个顺序后面是一个差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
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替换“列表_1”中的2(通过在索引1被减法的数字上加2)。我不能替换这个数字,因为我不能替换它,下一个输出不应该出现,因为只需要一个更改
我的方法可能真的很纠结,但这是我能想到的最好的方法,如果有更快的方法,我真的很感谢你的帮助。但除此之外,我确实希望修复我的代码,其总体思路是遵循2的顺序。属性是错误的:
list_1 = [1,2,5]
for i in range(1, len(list_1)):
htl = list_1[i]-list_1[i-1]
if htl != 2:
list_1[i] = list_1[i-1] + 2
print (list_1)
输出:
[1, 3, 5]
Out[11]: [1, 3, 5]
但最终,你想要的只是一个从初始点开始的序列,步骤为2,并且有一定数量的点
start = 1
points = 3
stop = points * 2 + start
list_1 = list(range(start, stop, 2))
输出:
[1, 3, 5]
Out[11]: [1, 3, 5]
如果我理解你的解释,你希望转换
list_1=[1,2,5]
tolist_1=[1,3,5]
未给出所需结果的行为:
list_1[i-1]+=2
for循环第一次迭代时,会生成list_1=[3,2,5]
第二次迭代时,它生成list\u 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:
为了捕捉列表中只有零个或一个元素的错误,我建议您在循环之前放置一个条件
如果len(list_1)>1:
将是一个好的开始,否则索引将引发索引器。我不确定是否完全理解您想要做什么,但首先,要解决您的输出问题,请更改:
列表_1[i-1]+=2
借
列表_1[i-1]+=2
把你的指纹放在外面,就像这样:
for i in range(1, len(list_1)):
htl = list_1[i]-list_1[i-1]
if not htl == 2:
list_1[i-1] += 1
print(list_1[i-1])
print(list_1[i-1])
希望能对您有所帮助。少于2?
我还认为您正在更改-1列表值,而不是当前索引
这应该行吗
list_1 = [1,2,5,6,7,8,15]
for i in range(1, len(list_1)):
htl = list_1[i]-list_1[i-1]
if htl < 2:
list_1[i] =list_1[i-1]+2
print(list_1[i-1])
print(list_1)
list_1=[1,2,5,6,7,8,15]
对于范围(1,len(列表_1))中的i:
htl=列表_1[i]-列表_1[i-1]
如果htl<2:
列表_1[i]=列表_1[i-1]+2
打印(列表_1[i-1])
打印(列表1)
您的答案有一些问题-您建议更改给定行,建议将其更改为相同的内容(您没有将[i-1]更改为[i])。此外,您的代码块格式出现错误,无法解决OPs问题。非常感谢您的评论!