สำหรับคำถามแรกของคุณ: รหัสที่เป็นอย่างดีที่ดีและควรจะทำงานถ้าเท่ากับหนึ่งขององค์ประกอบภายในitem
myList
บางทีคุณอาจลองค้นหาสตริงที่ไม่ตรงกับรายการใดรายการหนึ่งหรือบางทีคุณกำลังใช้ค่าทศนิยมซึ่งทนทุกข์จากความไม่ถูกต้อง
สำหรับคำถามที่สองของคุณ: มีหลายวิธีที่เป็นไปได้ถ้า "ค้นหา" สิ่งต่าง ๆ ในรายการ
ตรวจสอบว่ามีบางสิ่งอยู่ภายในหรือไม่
นี่คือกรณีการใช้งานที่คุณอธิบาย: การตรวจสอบว่ามีบางอย่างอยู่ในรายการหรือไม่ อย่างที่คุณทราบคุณสามารถใช้in
โอเปอเรเตอร์เพื่อ:
3 in [1, 2, 3] # => True
กรองคอลเลกชัน
นั่นคือการค้นหาองค์ประกอบทั้งหมดในลำดับที่ตรงตามเงื่อนไข คุณสามารถใช้ list comprehension หรือ expression generator สำหรับสิ่งต่อไปนี้
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
อันหลังจะส่งคืนเครื่องกำเนิดไฟฟ้าซึ่งคุณสามารถจินตนาการได้ว่าเป็นรายการสันหลังยาวที่จะสร้างขึ้นทันทีที่คุณทำซ้ำ โดยวิธีการแรกที่เทียบเท่ากับ
matches = filter(fulfills_some_condition, lst)
ใน Python 2 ที่นี่คุณสามารถดูฟังก์ชั่นการสั่งซื้อที่สูงขึ้นได้ ใน Python 3 filter
จะไม่ส่งคืนรายการ แต่เป็นวัตถุที่เหมือนตัวสร้าง
การค้นหาสิ่งที่เกิดขึ้นครั้งแรก
หากคุณต้องการเพียงสิ่งแรกที่ตรงกับเงื่อนไข (แต่คุณไม่ทราบว่ามันคืออะไร) ก็เป็นเรื่องดีที่จะใช้สำหรับวง (อาจใช้else
ประโยคเช่นกันซึ่งไม่เป็นที่รู้จักกันดี) คุณยังสามารถใช้
next(x for x in lst if ...)
ซึ่งจะส่งคืนการแข่งขันครั้งแรกหรือเพิ่มStopIteration
หากไม่พบ หรือคุณสามารถใช้
next((x for x in lst if ...), [default value])
การค้นหาตำแหน่งของรายการ
สำหรับรายการนอกจากนี้ยังมีindex
วิธีการที่บางครั้งอาจเป็นประโยชน์ถ้าคุณต้องการที่จะรู้ว่าที่เป็นองค์ประกอบบางอย่างในรายการ:
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
อย่างไรก็ตามโปรดทราบว่าหากคุณมีข้อมูลซ้ำให้.index
ส่งคืนดัชนีต่ำสุด: ......
[1,2,3,2].index(2) # => 1
หากมีการซ้ำซ้อนและคุณต้องการดัชนีทั้งหมดคุณสามารถใช้enumerate()
แทน:
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
myList
นั่นเป็นที่ดีที่สุดที่ดีและควรจะทำงานถ้ารายการเท่ากับหนึ่งขององค์ประกอบภายใน