Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Python 3的过程中更改数组中的元素?_Python_Python 3.x_List - Fatal编程技术网

如何在使用Python 3的过程中更改数组中的元素?

如何在使用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

我正在做一个程序,我可以修正一个列表的顺序,这个顺序后面是一个差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替换“列表_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]
to
list_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问题。非常感谢您的评论!