我需要这种行为,但宁愿有一个递减的列表,而不是一个增长的一个。 序列顺序是这个工作非常重要。
for item in mylist:
if is_item_mature(item):
## Process him
else:
## Check again later
mylist.append(item)
但我宁愿把它更像是这一点。 这是否行为像我想的? 任何更好的方法?
while mylist:
item = list.pop(0)
if is_item_mature(item):
##Process
else:
mylist.append(item)
我用你的方法看到的唯一的问题是越来越多的列表,这取决于你的使用可能会吃了你的记忆
我宁愿建议你使用一个队列 。 队列的设计和足够的灵活性来处理这两种端生产和消费
from Queue import Queue
q = Queue() #You can also specify the maximum size of the Queue here
# Assume your Queue was filled
while not q.empty():
# It won;t block if there are no items to pop
item = q.get(block = False)
if is_item_mature(item):
#process
else:
#In case your Queue has a maxsize, consider making it non blocking
q.put(item)
您可以放心地将项附加到列表中,而迭代将包括这些项目:
>>> lst = range(5)
>>> for i in lst:
... print i
... if i < 3:
... lst.append(i + 10)
...
0
1
2
3
4
10
11
12
但是,如果你喜欢一个递减的名单,那么你while
循环是完全适合您的需求。