ฉันมีรายการที่ประกอบไปด้วย 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 () `วนซ้ำรายการทั้งหมดก่อนการผ่านแต่ละรอบบนวงในเป็นวิธีที่ช้ามาก