ฉันเห็นคนกำลังใช้any
รวบรวมรายการอื่นเพื่อดูว่ามีรายการอยู่ในรายการหรือไม่ แต่มีวิธีที่รวดเร็วในการทำหรือไม่:
if list.contains(myItem):
# do something
ฉันเห็นคนกำลังใช้any
รวบรวมรายการอื่นเพื่อดูว่ามีรายการอยู่ในรายการหรือไม่ แต่มีวิธีที่รวดเร็วในการทำหรือไม่:
if list.contains(myItem):
# do something
คำตอบ:
คุณสามารถใช้ไวยากรณ์นี้:
if myItem in list:
# do something
นอกจากนี้ตัวดำเนินการผกผัน:
if myItem not in list:
# do something
มันทำงานได้ดีสำหรับรายการสิ่งอันดับชุดและ dicts (ตรวจสอบคีย์)
โปรดทราบว่านี่เป็นการดำเนินการ O (n) ในรายการและสิ่งอันดับ แต่การดำเนินการ O (1) ในชุดและ dicts
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
ไม่ใช่ tuple แต่สตริง (วงเล็บไม่ทำอะไรเลยเหมือนกับ(1)
เป็นจำนวนเต็ม) หากคุณต้องการ 1 tuple คุณต้องเพิ่มเครื่องหมายจุลภาคหลังรายการเดียว: ("--skip-ias",)
(หรือ(1,)
)
นอกจากสิ่งที่คนอื่นพูดคุณอาจสนใจที่จะรู้ว่าสิ่งที่in
เรียกว่าlist.__contains__
วิธีการที่คุณสามารถกำหนดในชั้นเรียนใด ๆ ที่คุณเขียนและสามารถใช้งานไพ ธ อนได้อย่างเต็มที่
การใช้ใบ้อาจจะ:
>>> class ContainsEverything:
def __init__(self):
return None
def __contains__(self, *elem, **k):
return True
>>> a = ContainsEverything()
>>> 3 in a
True
>>> a in a
True
>>> False in a
True
>>> False not in a
False
>>>
ฉันมากับซับนี้หนึ่งเมื่อเร็ว ๆ นี้เพื่อรับTrue
ถ้ารายการมีจำนวนรายการที่เกิดขึ้นใด ๆ หรือFalse
ถ้ามันไม่มีสิ่งใดเกิดขึ้นหรืออะไรเลย การใช้next(...)
จะให้ค่าส่งคืนเริ่มต้น ( False
) และหมายความว่าควรรันเร็วกว่าการรันรายการความเข้าใจทั้งหมด
list_does_contain = next((True for item in list_to_test if item == test_item), False)
any(item == test_item for item in list_to_test)
ฉันจะทำงานด้วยเหมือนกัน
เมธอด list index
จะส่งคืน-1
หากไอเท็มไม่มีอยู่และจะส่งคืนดัชนีของไอเท็มในรายการหากมีอยู่ อีกทางเลือกหนึ่งในif
คำสั่งที่คุณสามารถทำต่อไปนี้:
if myItem in list:
#do things
นอกจากนี้คุณยังสามารถตรวจสอบว่าองค์ประกอบไม่ได้อยู่ในรายการที่มีคำสั่งต่อไปนี้:
if myItem not in list:
#do things
index
วิธีไม่กลับ -1 ถ้าองค์ประกอบไม่อยู่ก็โยนValueError
ข้อยกเว้น