遍历python列表

时间:2017-10-06 04:18:37

标签: python

我的数据库中有500条记录,我将它们全部加载到字典元素的python列表中。(25个键值对)

我正在调用一个遍历列表中所有字典元素的方法,并对每条记录执行一些操作。在遍历时,我注意到在遍历了一半元素后,逻辑退出方法并在下一半再次重新启动。

我试着把它作为一个例子。 (我不能复制确切的代码,因为它是不可能的)

例如:

def loadrec():
  reading from database and appending rows to a global list(mylist)

def myrun():
  print "****** Execution Started **********"
  for row in mylist:
    doing some operations and printing a string

if __name__=="__main__":
i=0
while (i>=0): #This never ends(to make the script run forever)
   loadrec()
   myrun()
   print "****** Execution Ended ************"



Result:


****** Execution Started **********
printed 250 records
****** Execution Ended ************


****** Execution Started **********
printed 125 records
****** Execution Ended ************


****** Execution Started **********
printed 62 records
****** Execution Ended ************

****** Execution Started **********
printed 31 records
****** Execution Ended ************

****** Execution Started **********
printed 15 records
****** Execution Ended ************

****** Execution Started **********
printed 7 records
****** Execution Ended ************

****** Execution Started **********
printed 1 record
****** Execution Ended ************

我不确定为什么每次只处理总记录的一半。 但是,最后,它正在处理所有记录。

我已经尝试检查python列表最大大小或内存是否存在任何问题,但似乎没有一个问题可能出现。

很高兴知道任何可能原因的暗示。

1 个答案:

答案 0 :(得分:1)

我将在黑暗中进行疯狂的刺伤。

你正在做这样的事情:

def myrun():
    print "****** Execution Started **********"
    for row in mylist:
        #Some processing here
        myList.remove(row)

您无法改变正在迭代的列表。这将仅占每次处理列表的一半。您需要重构代码。如果没有向我们展示您的代码,我甚至都不会尝试重构代码。