如何使用Python中的第n-(n-1)个术语?

如何使用Python中的第n-(n-1)个术语?,python,Python,我想知道如何在列表中找到第n项-(n-1)项。我知道这应该很简单,但我只是在应用上遇到了麻烦。因此,给定[0,2,4,6,5]的输入,函数应该返回[0,2,2,2,-1]。我的解决方案(不起作用)如下: def cost_to_diff (stocks): for i in range(i+1): stock[i] = stock[i] - stock[i-1] print stock 为什么不能按预期工作?您的错误是重置了列表中的ith元素,因此在下一

我想知道如何在列表中找到第n项-(n-1)项。我知道这应该很简单,但我只是在应用上遇到了麻烦。因此,给定
[0,2,4,6,5]
的输入,函数应该返回
[0,2,2,2,-1]
。我的解决方案(不起作用)如下:

def cost_to_diff (stocks):
    for i in range(i+1):
        stock[i] = stock[i] - stock[i-1]
        print stock

为什么不能按预期工作?

您的错误是重置了列表中的
i
th元素,因此在下一个循环迭代中,您可以访问它的更改值

这将打印您需要的内容

def cost_to_diff (stocks):
    for i in range(1, len(stocks)):
        print stocks[i] - stocks[i-1]
如果要打印列表,请执行以下操作

def cost_to_diff (stocks):
    diff = []
    for i in range(1, len(stocks)):
        diff.append(stocks[i] - stocks[i-1])
    print diff


我还建议你试着完成这些任务。我会做好的。特别是如果你在玩股票数据,numpy会比列表快得多。此外,对于股票数据,通常使用数据帧,因此您需要研究的是数据帧,您需要的功能也是数据帧。

您的错误是您重置了列表的第i个元素,因此在下一个循环迭代中,您可以访问它的更改值

这将打印您需要的内容

def cost_to_diff (stocks):
    for i in range(1, len(stocks)):
        print stocks[i] - stocks[i-1]
如果要打印列表,请执行以下操作

def cost_to_diff (stocks):
    diff = []
    for i in range(1, len(stocks)):
        diff.append(stocks[i] - stocks[i-1])
    print diff


我还建议你试着完成这些任务。我会做好的。特别是如果你在玩股票数据,numpy会比列表快得多。此外,对于股票数据,通常使用数据帧,因此需要研究的内容和所需的函数也是如此。

您使用了错误的范围。你需要找出股票清单的长度,然后建立相应的范围

differences = []
for i in range(len(stocks) - 1):
    differences.append(stock[i+1] - stock[i])
    print differences
然而,有一种更好的方法可以做到这一点。Python有几个内置函数可以帮助您轻松地完成这类工作。使用zip函数获取元素,而不会与索引混淆

differences = []
for a, b in zip(l, l[:1]):
    differences.append(b-a)
例如:

my_list = [0, 3, 4, 5, 7]
print zip(my_list, my_list[1:])
这将产生输出

[(0, 3), (3, 4), (4, 5), (5, 7)]

之后只需减去元素。

使用了错误的范围。你需要找出股票清单的长度,然后建立相应的范围

differences = []
for i in range(len(stocks) - 1):
    differences.append(stock[i+1] - stock[i])
    print differences
然而,有一种更好的方法可以做到这一点。Python有几个内置函数可以帮助您轻松地完成这类工作。使用zip函数获取元素,而不会与索引混淆

differences = []
for a, b in zip(l, l[:1]):
    differences.append(b-a)
例如:

my_list = [0, 3, 4, 5, 7]
print zip(my_list, my_list[1:])
这将产生输出

[(0, 3), (3, 4), (4, 5), (5, 7)]

之后需要做的就是减去元素。

以下代码返回
[2,2,2,-1]
,因为我不明白为什么第一个元素会得到0

您是否假设第一个-1元素也是0

len('list')
将给出列表的长度

范围(开始、结束)
将为您提供一个范围

由于您希望在for循环中的第二个元素(
index=1
)开始迭代,因此start将是1,end将是股票列表的长度

stock = [0,2,4,6,5] 
result = []#create an empty list for the results
for i in range(1,len(stock)):#set the iteration steps, will be 1,2,3,4 in this case
    result.append(stock[i] - stock[i-1])#By using stack[i] = ... you will overwrite the ith element
print result

下面的代码返回
[2,2,2,-1]
,因为我不明白为什么第一个元素会得到0

您是否假设第一个-1元素也是0

len('list')
将给出列表的长度

范围(开始、结束)
将为您提供一个范围

由于您希望在for循环中的第二个元素(
index=1
)开始迭代,因此start将是1,end将是股票列表的长度

stock = [0,2,4,6,5] 
result = []#create an empty list for the results
for i in range(1,len(stock)):#set the iteration steps, will be 1,2,3,4 in this case
    result.append(stock[i] - stock[i-1])#By using stack[i] = ... you will overwrite the ith element
print result

可能重复-您认为
i在范围(i+1)
中如何工作?不能在同一行中使用和定义一个值,例如:
n=0时如何定义函数的可能重复?可能重复-您认为范围(i+1)内的
i将如何工作?一个值不能在同一行中使用和定义,就像当
n=0
时您如何定义函数的可能重复一样?假设您不需要以前的
库存
值,那么这将改变列表,产生这个-
[2,2,2,-1,5]
,而不是
[0,2,2,2,2,-1]
。貌似优雅,假设你不需要之前的
股票
值,这将改变列表,产生这个-
[2,2,2,-1,5]
,而不是
[0,2,2,2,2,-1]