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

2024-09-29 22:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个程序,在那里我可以修复一个列表的序列,序列后面是一个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的顺序。你知道吗


Tags: 方法代码in程序列表for顺序过程
3条回答

如果我能理解你的解释,你想改信

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列表值,而不是当前索引。你知道吗

这样行吗?你知道吗

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]

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]

但最终,你想要的只是一个从一个初始点开始的序列,步骤是2,并且有一定数量的点

start = 1
points = 3
stop = points * 2 + start
list_1 = list(range(start, stop, 2))

输出:

Out[11]: [1, 3, 5]

相关问题 更多 >

    热门问题