可以忽略列表的最后一个元素吗?

问题描述

我有 2 个有工作时间和工作要做的清单

hours = ["00:00","06:00","08:30","09:30","10:30","12:30","14:30","16:00","18:00",]
jobs  = [job1,job2,job3,job4,job5,job6,job7,job8,job9]

通过循环使用调度库来调度作业。

for i,x in zip(hours,jobs):
    schedule.every().monday.at(i).do(x)
    schedule.every().tuesday.at(i).do(x)
    schedule.every().wednesday.at(i).do(x)
    schedule.every().thursday.at(i).do(x)
    schedule.every().friday.at(i).do(x)

while True:
        schedule.run_pending()
        time.sleep(1)

我想做的是在星期五schedule.every().friday.at(i).do(x)我安排所有的工作除了最后一个

job9 at 18:00

在这种情况下,有没有办法避免列表中的最后一项?

解决方法

您可以添加一个 if 条件来检查它是否位于列表的最后一个元素:

for i,x in zip(hours,jobs):
    if i = hours[-1]:
        break
    schedule.every().monday.at(i).do(x)
    schedule.every().tuesday.at(i).do(x)
    schedule.every().wednesday.at(i).do(x)
    schedule.every().thursday.at(i).do(x)
    schedule.every().friday.at(i).do(x)

这会一直循环下去,直到到达最后一个元素 (hours[-1]),并在那里跳出循环。

,

我相信 Ismail 的回答将避免在所有日子里安排最后一个工作。如果您只希望周五受到影响,请将 if 语句放在周五之前:

for i,jobs):
    schedule.every().monday.at(i).do(x)
    schedule.every().tuesday.at(i).do(x)
    schedule.every().wednesday.at(i).do(x)
    schedule.every().thursday.at(i).do(x)
    if i != hours[-1]:
        schedule.every().friday.at(i).do(x)