Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 将数据[x]的值与数据[x+;1]相加_Python_Python 3.x - Fatal编程技术网

Python 将数据[x]的值与数据[x+;1]相加

Python 将数据[x]的值与数据[x+;1]相加,python,python-3.x,Python,Python 3.x,我有一个很长的数据列表,其中包含了“时间戳”和“数量”的列表。然而,列表中的时间戳并非全部按顺序排列(例如,时间戳[x]可以是140056,而时间戳[x+1]可以是560)。我不打算对它们进行排列,而是将timestamp[x]的值与timestamp[x+1]相加 ps:打印时,数量的排列顺序需要与列表中的顺序相同 我一直在使用以下代码处理此问题,其中timestamp是包含所有时间戳值的列表的名称: for t in timestamp: previous = timestamp[t

我有一个很长的数据列表,其中包含了“时间戳”和“数量”的列表。然而,列表中的时间戳并非全部按顺序排列(例如,时间戳[x]可以是140056,而时间戳[x+1]可以是560)。我不打算对它们进行排列,而是将timestamp[x]的值与timestamp[x+1]相加

ps:打印时,数量的排列顺序需要与列表中的顺序相同

我一直在使用以下代码处理此问题,其中timestamp是包含所有时间戳值的列表的名称:

for t in timestamp:
    previous = timestamp[t-1]
    increment = 0
    if previous > timestamp[t]:  
        increment = previous
    t += increment
    delta = datetime.timedelta(0, (t - startTimeStamp) / 1000);
    timeAtT = fileStartDate + (delta + startTime)
    print("time at t=" + str(t) + " is: " + str(timeAtT));
    previous = t

然而,它产生了TypeError:列表索引必须是整数,而不是元组。我可以知道如何解决这个问题吗,或者有其他方法来完成这个任务吗?谢谢

问题在于,您将
t
视为列表的索引。在您的例子中,
t
保存列表的实际值,因此像
timestamp[t]
这样的构造是无效的。您想要:

for t in range(len(timestamp)):
或者,如果同时需要索引和值:

for (t, value) in enumerate(timestamp):

当您对时间戳中的
进行
时,您正在使
t
接受时间戳中每个项目的值。但是,您尝试使用
t
作为索引,以使
成为先前的
。要执行此操作,请尝试:

for i, t, in enumerate(timestamp):
    previous = timestamp[i]
    current = t

还有,当你遇到这样的打字错误时,一定要试着打印出中间步骤,因此,您可以准确地看到出现了什么问题。

对于时间戳中的t
这将迭代时间戳中的项目,而不是指示符。对不起,我忘了提到时间戳是包含所有时间戳值的列表的名称,您可以使用例如“print(timestamp[4])调用列表中的某些内容,它会给出数值。但是,现在我要做的是检查列表中的所有内容。向我们显示
时间戳
的内容片段首先,您应该发布准确的错误消息-最重要的是,这将告诉我们哪个对时间戳的访问被中断。第二,似乎有几件事不对<时间戳中t的code>将使
t
表示时间戳(例如
1467374702.602727
),而不是索引(例如
16
);执行
timestamp[t]
timestamp[t-1]
应该已经失败,除非您的列表很长且时间戳是小整数。如果它没有失败,其结果是不明智的
startTimeStamp
startTime
似乎有着奇怪的关联。您也没有修改列表,只是打印。等等,等等。。。