我对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]

答案 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)