Tôi có một danh sách bao gồm khoảng 20000 danh sách. Tôi sử dụng phần tử thứ 3 của mỗi danh sách làm cờ. Tôi muốn thực hiện một số thao tác trong danh sách này miễn là ít nhất một cờ của phần tử là 0, giống như:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Ban đầu, tất cả các cờ đều bằng 0. Tôi sử dụng vòng lặp while để kiểm tra xem ít nhất một cờ của phần tử có bằng 0 hay không:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Nếu check(my_list)
trả về True
, sau đó tôi tiếp tục làm việc trong danh sách của mình:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Trên thực tế, tôi muốn xóa một phần tử trong my_list khi tôi lặp lại phần tử đó, nhưng tôi không được phép xóa các mục khi tôi lặp lại phần tử đó.
Bản gốc my_list không có cờ:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Vì tôi không thể loại bỏ các yếu tố khi tôi lặp lại nó, tôi đã phát minh ra những lá cờ này. Nhưng trong đó my_list
có nhiều mục và while
vòng lặp đọc tất cả chúng ở mỗi for
vòng lặp và nó tiêu tốn rất nhiều thời gian! Bạn có đề nghị nào không?
None
hoặc []
khi bạn lặp qua danh sách thay vì xóa chúng. Kiểm tra toàn bộ danh sách với 'check () `lặp qua tất cả các mục trước mỗi lần vượt qua trên vòng lặp bên trong là một cách tiếp cận rất chậm.