固定时间的Python循环

时间:2015-01-17 00:36:00

标签: python loops for-loop

我有一个这样的循环:

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个值,剩下并完成。

这样的事情是可能的,还是我需要将我的列表列入许多小清单并一次运行一个?

3 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:1)

我建议你以30个元素的间隔对列表进行切片,并在每个间隔上调用该函数。

答案 2 :(得分:0)

使用切片很容易。 [: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:]