Python,求第一个列表索引与前一个列表索引的差并打印输出

3
首先,我不擅长英语,请对我友善一些。 我的代码出了问题。我需要从当前列表索引中减去以前的列表索引。
让我用我的代码举个例子;
xvalues = [1,1,2,3,3,3,4,1,1,1,2,3,4,5,6,6,-1,-23,-44,-512,1,2,3,4,4,4,4,4,4]

for i in xvalues:
    print([i])

在 for 循环中,我需要从当前值中减去先前的值。

我已经尝试过:

for i in xvalues:
    print([i-1])

我需要在我的列表中每个值都减去"-1"。我只需在for循环中添加这个操作即可。

[1]-[0] after this, do this ,[2]-[1] after ,do this [3]-[2]... 

我正在寻找有人可以帮助我,并希望这个话题能够帮助到其他人 :)
4个回答

3
在下面的代码中,后续的减法是通过新值进行的。例如,输出的前三个值为[1,0,2,...]。请注意,在第3个位置上,由于2-0,我们得到了2的结果,因为0是第2个位置上的新值。
xvalues = [1,1,2,3,3,3,4,1,1,1,2,3,4,5,6,6,-1,-23,-44,-512,1,2,3,4,4,4,4,4,4]

for i in range(1, len(xvalues)):
  xvalues[i] = xvalues[i] - xvalues[i-1]

1
是的,@illusion,它运行得非常好!非常感谢你! - Mehmet KURTOW
我给出的例子与我提供的代码不兼容。你确定这对你有效吗? - illusion
1
是的先生!我做了一些微小的更改,但基础是您的代码非常好用。 - Mehmet KURTOW

1

我需要从当前列表索引中减去前一个列表索引。

重要提示:

[1]-[0] after this, do this ,[2]-[1] after ,do this [3]-[2]... 

你可以尝试这个。

xvalues = [1,1,2,3,3,3,4,1,1,1,2,3,4,5,6,6,-1,-23,-44,-512,1,2,3,4,4,4,4,4,4]

for i,item in enumerate(xvalues):
    if i > 0:
        previous = xvalues[i-1]#previous = item
        print(f"{item}-({previous})")
        sub = item - previous
        print("Answer: ",sub,"\n")

OUTPUT:

1-(1)
Answer:  0 

2-(1)
Answer:  1 

3-(2)
Answer:  1 

3-(3)
Answer:  0 

3-(3)
Answer:  0 

4-(3)
Answer:  1 

1-(4)
Answer:  -3 

1-(1)
Answer:  0 

1-(1)
Answer:  0 

2-(1)
Answer:  1 

3-(2)
Answer:  1 

4-(3)
Answer:  1 

5-(4)
Answer:  1 

6-(5)
Answer:  1 

6-(6)
Answer:  0 

-1-(6)
Answer:  -7 

-23-(-1)
Answer:  -22 

-44-(-23)
Answer:  -21 

-512-(-44)
Answer:  -468 

1-(-512)
Answer:  513 

2-(1)
Answer:  1 

3-(2)
Answer:  1 

4-(3)
Answer:  1 

4-(4)
Answer:  0 

4-(4)
Answer:  0 

4-(4)
Answer:  0 

4-(4)
Answer:  0 

4-(4)
Answer:  0 

1
你可以使用zip:
xvalues = [1,1,2,3,3,3,4,1,1,1,2,3,4,5,6,6,-1,-23,-44,-512,1,2,3,4,4,4,4,4,4]

for x1, x2 in zip(xvalues, xvalues[1:]):
    print(x2-x1)

1
这对我来说是最好的答案,显然如此。 - Ice Bear

0

澄清语法:

[1] 创建一个包含 1 的新列表,这不是你想要的。

让我们有一个名为 x 的列表,包含 10、20、30。然后要访问它的值,我们使用 x[pos]。获取列表 x 中在位置 pos 的任何值。该位置通常称为索引。

x[0]  # returns 10
x[1]  # returns 20
x[2]  # returns 30

每个其他的正索引都会抛出错误IndexError: list index out of range

我们也可以通过变量访问索引

i = 2
x[i]  # returns 30

作为答案,我建议使用Myccha建议的zip函数 ;)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接