我有一个包含20000个列表的列表。我将每个列表的第3个元素用作标志。只要至少一个元素的标志为0,我想在此列表上执行一些操作,就像:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
开始时,所有标志均为0。我使用while循环检查至少一个元素的标志是否为0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
如果check(my_list)
返回True
,那么我将继续处理我的列表:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
实际上,我想在对my_list进行迭代时删除其中的一个元素,但是在对它进行迭代时,不允许删除项目。
原始的my_list没有标志:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
由于在迭代过程中无法删除元素,因此发明了这些标志。但是,my_list
其中包含许多项目,并且while
循环在每个for
循环中读取所有项目,这会花费大量时间!你有什么建议吗?
3
看起来您的数据结构不适合您的问题。如果您对上下文有更多的解释,也许我们可以建议一些更合适的方法。
—
uselpa 2012年
也许您可以用
—
martineau 2012年
None
或[]
在列表中进行迭代时替换这些项目,而不是删除它们。在每次通过内部循环之前,使用'check()`遍历所有项来检查整个列表是一种非常缓慢的方法。