我的问题很简单:我有一长串元素,我想要遍历并检查每个元素是否符合条件。根据条件的结果,我想删除列表中的当前元素,并像往常一样继续迭代它。在迭代时从列表中删除项目,而无需在Python中使用额外的内存
我已阅读了有关此问题的其他一些线索。提出两种解决方案。要么从列表中创建一个字典(这意味着制作所有数据的副本,这些数据已经填满了我的案例中的所有RAM)。要么反过来列表(这打破了我想实现的算法的概念)。
有没有比这更好或更优雅的方式来做到这一点?
def walk_list(list_of_g):
g_index = 0
while g_index < len(list_of_g):
g_current = list_of_g[g_index]
if subtle_condition(g_current):
list_of_g.pop(g_index)
else:
g_index = g_index + 1
所有这些的副本:http://stackoverflow.com/search?q=%5Bpython%5D+list+remove。具体http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python – 2010-04-13 11:48:38
是的我在发布我的问题之前仔细阅读你链接到的其他线程。在另一个线索中提出的答案没有一个解决我关心的问题。这是因为我的问题有所不同,即复制列表被排除在外并且向后遍历。 – xApple 2010-04-13 13:41:09