Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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
在Python2.7中计算和存储函数输出?_Python_Function_Python 2.7_For Loop_Printing - Fatal编程技术网

在Python2.7中计算和存储函数输出?

在Python2.7中计算和存储函数输出?,python,function,python-2.7,for-loop,printing,Python,Function,Python 2.7,For Loop,Printing,我有这样一个代码: nList = [[[0,0,0],[100420,0,623400]],\ [[]],\ [[100043,1324000,123240]],\ [[0,0,543],[3002340,443000,34300],[334000,4043400,7342],[0,0,134020]] import math prevX, prevY, prevT = 0, 0, 0 #Entry point for traceIndex in range(0, len(nList)):

我有这样一个代码:

nList = [[[0,0,0],[100420,0,623400]],\
[[]],\
[[100043,1324000,123240]],\
[[0,0,543],[3002340,443000,34300],[334000,4043400,7342],[0,0,134020]]
import math
prevX, prevY, prevT = 0, 0, 0

#Entry point
for traceIndex in range(0, len(nList)):
    print 'trace: ' + str(traceIndex+1)
    trace = nList[traceIndex]
    for pointIndex in range(0, len(trace)):
        point = trace[pointIndex]
        if len(point)>0:
            tempX, tempY, tempT = point[0], point[1], point[2]
            if pointIndex != 0:
           #calculate time difference here
                timeDiff = calculateTime (tempT,prevT)
基本上,
nList
在每个称为跟踪的
\
之前都有子列表,每个跟踪都有三个元素的点。例如,
nList[0][0]
生成跟踪1,点1=
[0,0,0]
<代码>点=[x坐标、y坐标、时间]。我计算了每条轨迹中每个点的时间差。现在我需要总结不同记录道的时间差并打印它们,以便:

trace: 1
623400
trace: 2
trace: 3
trace: 4
187393
trace: 1
623400
trace: 2
trace: 3
trace: 4
187393

nList由称为“trace”的子列表组成,每个“trace”都有一个或多个点和3个元素[x,y,t]。例如,trace1有两个点,即trace1point1=[0,0,0]和trace1point2=[100420,0623400]。timeDiff计算t2和t1之间的差值。对于trace1,这将是(623400-0)。与Trace1相比,trace4有更多的点,timeDiff将用于单个trace4pointN,具有
1=这更容易解决,使用zip和直接迭代元素可以避免在变量中存储太多数据。根据示例输出,您需要每个时间点之间的绝对差值:

traces = [[[0,0,0],[100420,0,623400]],\
[[]],\
[[100043,1324000,123240]],\
[[0,0,543],[3002340,443000,34300],[334000,4043400,7342],[0,0,134020]]]
TIME_INDEX = 2  
traceCounter = 1
for trace in traces:
    print "trace:", traceCounter
    traceCounter += 1

    if len(trace[0]) < 2:
       #no coordinate in first element of trace, nothing to do
       continue

    #Zip takes several lists as arguments and returns list of lists with every 0th element in the 0th list, every 1st element in the 1st list etc. 
    timeStamps = zip(*trace)[TIME_INDEX]


    sumOfTimeDiffs = sum([abs(y-x) for x, y in zip(timeStamps[:-1], timeStamps[1:])] )

    if sumOfTimeDiffs > 0:
       print sumOfTimeDiffs

这应该行得通。基本上,我通过提取轨迹中每个点的时间来形成一个列表。然后形成一个相同的重复列表。从一个列表中删除第一个元素,从另一个列表中删除最后一个元素。然后减去列表。将元素添加到结果列表中会得到输出。

什么是
timeDiff
?你说你想“总结不同轨迹的时间差”。您要对哪个
timeDiff
s求和?不止一个吗?什么是“trace4输出”?它“本质上”是什么意思?什么是“轨迹中的三坐标点”?什么是“第三元素中的个体差异”?nList由称为“跟踪”的子列表组成,每个“跟踪”都有一个或多个点和3个元素[x、y、t]。例如,trace1有两个点,即trace1point1=[0,0,0]和trace1point2=[100420,0623400]。timeDiff计算t2和t1之间的差值。对于trace1,这将是(623400-0)。trace4与trace 1相比有更多的点,timeDiff将用于单个trace4pointN,1=我不知道torkil发布了答案。你可以同意他的回答。它使用相同的逻辑,但看起来更简洁和整洁。
   nList = [[[0,0,0],[100420,0,623400]],\
         [[]],\
         [[100043,1324000,123240]],\
         [[0,0,543],[3002340,443000,34300],[334000,4043400,7342],[0,0,134020]]]
    for trace in nList:
        list1=list()
        trace_index = nList.index(trace)
        print "trace%d"%(trace_index+1)
        if len(trace)>1:
            for point in trace:
                list1.append(point[2])

            list2 = list1[1:]
            list1.pop()
            output = (abs(i2 - i1) for i2,i1 in zip(list2,list1))
            print(sum(output))