python - 在 Python 2.7 中计算和存储函数输出?

标签 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)):
    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]point=[x-coordinate, y-coordinate, time] 。我已经计算了每条轨迹中每个点的 timeDiff 。现在我需要总结不同跟踪的 timeDiff 并打印它们,以便:

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

nList 由称为“trace”的子列表组成,每个“trace”都有一个或多个带有 3 个元素 [x, y, t] 的点。例如,trace1 有 2 个点,trace1point1 = [0,0,0] 且trace1point2=[100420,0,623400]。 timeDiff 计算 t2 和 t1 之间的差。对于trace1,这将是(623400-0)。与迹线 1 相比,迹线 4 有更多的点,并且 timeDiff 对于单个迹线 4pointN 而言为 1=<N=<4 、(34300-543)、(7342-34300)和(134020-7342)。我想编写一个程序,获取每个跟踪中的所有 timeDiff,并以产生上述输出的方式对它们进行求和。

最佳答案

使用 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

输出:

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

关于python - 在 Python 2.7 中计算和存储函数输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578854/

相关文章:

python - Arduino 无法与以太网客户端连接

Python NLTK FreqDist() 通过将 k、v 写入磁盘来减少内存使用?

javascript - 如何找出函数中的模块路径

python - Tkinter GUI 中的多线程,不同类中的线程

Python-将带有特殊字符的字符串转换为字节

python - 如何摆脱 Pandas/Matplotlib 条形图 x 轴上的虚线?

python - 在脚本可以使用 Selenium + Python + Chrome 切换到它之前警报消失

c - 如何在函数中传递参数数组指针?

python - 这个特定的 Python 函数组合背后的逻辑是什么?

ruby - Windows Liquid 异常 : Failed to get header 上的 Jekyll