20000のようなリストで構成されるリストがあります。各リストの3番目の要素をフラグとして使用します。少なくとも1つの要素のフラグが0である限り、このリストでいくつかの操作を実行したいのですが、次のようになります。
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
最初はすべてのフラグが0です。whileループを使用して、少なくとも1つの要素のフラグが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
ループでそれらすべてを読み取り、多くの時間を消費します。何か提案はありますか?
None
か、アイテムを置き換えることができ[]
ます。'check() `でリスト全体をチェックして、内部ループの各パスの前にすべてのアイテムを繰り返し処理することは、非常に遅いアプローチです。