繁体   English   中英

如何在Python中采用第n-(n-1)项?

[英]How to take the nth - (n-1)th term in 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

为什么这不能按预期工作?

您的错误是您重置了列表的第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

要么

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

我也建议您尝试使用numpy进行此类任务。 此功能将完成工作。 特别是如果您在处理股票数据,numpy将比列表快得多。 此外,对于股票数据,通常使用数据框架,因此您需要研究熊猫 ,而Series.diff是您需要的功能。

您使用的范围错误。 您需要找出库存清单的长度,然后相应地建立范围。

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')将给您列表的长度。

range(start, end)将为您提供范围。

由于您希望在for循环中的第二个元素( index = 1 )处开始迭代,因此开始将为1,结束将为库存清单的长度。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM