【问题标题】:Python loop for fixed times固定时间的 Python 循环
【发布时间】:2015-03-15 16:53:54
【问题描述】:

我有一个这样的循环:

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

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

【问题讨论】:

    标签: python loops for-loop


    【解决方案1】:

    我建议您以三十个元素为间隔对列表进行切片,并在每个间隔上调用该函数。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        试试这个

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-26
          • 2019-02-09
          • 1970-01-01
          • 1970-01-01
          • 2012-08-18
          • 1970-01-01
          • 1970-01-01
          • 2021-02-06
          相关资源
          最近更新 更多