我有一个类似20000列表组成的列表。我使用每个列表的第三个元素作为标志。我想做这个名单上的一些操作,只要至少一个元素的标志是0,这是这样的:如何检查列表中的所有元素是否与条件匹配?
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
在开始的时候所有的标志都为0。我用一个while循环来检查,如果至少一个元素标志为0:
def check(lista):
for item in lista:
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
循环中读取它们,并且它会消耗大量时间!你有什么建议吗?
看起来像你的数据结构不理想您的问题。如果你再详细解释一下上下文,也许我们可以提出一些更合适的建议。 – uselpa
也许你可以用'None'或'[]'代替项目,而不是删除它们。在每次内循环传递之前,使用'check()'遍历所有项目来检查整个列表是非常缓慢的方法。 – martineau