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

2024-09-27 17:44:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还比较陌生,我仍然在为我的ICT课程做基础的工作。你知道吗

我有一个任务,创建一个程序,捕捉外国车牌超速。我已经做了进出的次数,以后会被分配到10个不同的车牌号上(这一点并不重要)。你知道吗

为了节省空间,我尝试使用Leave上的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]

Tags: ofthe项目命令程序列表foritem
2条回答

我想你在找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)

您可以使用地图:

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

当心,在python2.7中,当我试图打印整个列表而不是逐个打印时,这让我觉得有些奇怪(参见这里Python 2.7.5 error printing list of float numbers

相关问题 更多 >

    热门问题