ฉันมีรายการที่ประกอบไปด้วย 20,000 รายการ ฉันใช้องค์ประกอบที่ 3 ของแต่ละรายการเป็นค่าสถานะ ฉันต้องการที่จะดำเนินการบางอย่างในรายการนี้ตราบใดที่ธงอย่างน้อยหนึ่งองค์ประกอบเป็น 0 มันเหมือน:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
ในการเริ่มต้นการตั้งค่าสถานะทั้งหมดเป็น 0 ฉันใช้การวนรอบสักครู่เพื่อตรวจสอบว่าค่าสถานะอย่างน้อยหนึ่งองค์ประกอบเป็น 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 () `วนซ้ำรายการทั้งหมดก่อนการผ่านแต่ละรอบบนวงในเป็นวิธีที่ช้ามาก