Python 循环固定时间

Python loop for fixed times

我有一个这样的循环:

def handle(self, *args, **options):
    database.objects.all().delete()
    for x in list:
        db.objects.create(
            ...add some data to database table...)

该列表包含 100 个值。但是我可能 运行 一次只有 30 个值的循环。脚本末尾需要 运行 所有 100 个值。

为什么我有这么奇怪的问题,是脚本从第三方数据库中取数据,但是允许一次取30个对象 时间。所以我需要的是获取 30 个值的脚本。以某种方式暂停并获取接下来的 30 个值,最后一次获取剩下的 10 个值并完成。

这样的事情可行吗,还是我需要将我的列表分成许多小列表并 运行 一次一个?

试试这个

a=0
for x in list:
    #whatever you are doing
    a+=1
    if a==30:
        break
#Then do it again
for x in list[a:]:
    #whatever you are doing
    a+=1
    if a==60:
        break
#Again
for x in list[a:]:
    #whatever you are doing
    a+=1
    if a==90:
        break

#Last Time!
for x in list[a:]:
    #whatever you are doing

这很容易使用切片。 [:30]指的是从头到第30个元素的子列表。 [30:]表示从第30个元素到末尾的子列表

要处理 30 个值块中的列表,您可以这样做:

while len(list) > 0:
    dostuff(list[:30])
    list = list[30:]

要在每 30 个元素后执行操作,您可以执行以下操作:

while len(list) > 0:
    for item in list[:30]:
         doSomething(item) 

    dostuff()
    list = list[30:]

我建议您将列表分成 30 个元素的间隔,然后在每个间隔上调用该函数。