从命令中的两个列表中减去两个项目

时间:2015-11-12 12:49:09

标签: python list for-loop printing

我对Python很新,我仍然为我的ICT课程做基本的工作。

我有一个任务是创建一个程序来捕捉超速的外国号牌。我已经完成了进入和离开的时间,之后将被分配到10个不同的号牌(这一点并不重要)。

为了节省空间,我试图在Leave和Enter列表中使用for命令,希望从Leave项中删除Enter项,以获得时间让一辆车从相机A到达B中。

我该如何有效地做到这一点?这是我尝试过的东西,虽然我知道它为什么错,但我无法在任何地方找到解决方案。



import itertools

Enter=[7.12,
       7.14,
       7.24,
       7.45,
       7.28,
       7.31,
       7.18,
       7.25,
       7.33,
       7.38] #A list for the times of cars passing Camera A

Leave=[7.56,
       7.24,
       7.48,
       7.52,
       7.45,
       7.57,
       7.22,
       7.31,
       7.37,
       7.41] #A list for the times of cars passing Camera B

Timestaken=[]

for item in itertools.chain(Leave,Enter):
    Timestaken.append(item-item)

print(Timestaken)




我得到的结果是这个,肯定是因为for命令仍然从一个列表的项目远离同一项目???:



>>> 
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]




2 个答案:

答案 0 :(得分:1)

我认为您正在寻找zip

Enter=[7.12,
       7.14,
       7.24,
       7.45,
       7.28,
       7.31,
       7.18,
       7.25,
       7.33,
       7.38] #A list for the times of cars passing Camera A

Leave=[7.56,
       7.24,
       7.48,
       7.52,
       7.45,
       7.57,
       7.22,
       7.31,
       7.37,
       7.41] #A list for the times of cars passing Camera B

for enter_data, leave_data in zip(Enter, Leave):
    print(leave_data - enter_data)

答案 1 :(得分:0)

您可以使用地图:

for interval in map(lambda x, y: y-x, Enter, Leave):
    print interval

当我尝试打印整个列表而不是逐个打印时,请注意这在python 2.7中为我做了一些奇怪的事情(请参阅此处Python 2.7.5 error printing list of float numbers