คุณจะค้นหารายการในรายการ Python ได้อย่างไร เป็นคำถามที่ผู้เข้ารหัส Python ทุกคนพบในบางประเด็น โชคดีที่ภาษามีหลายวิธีในการค้นหารายการในรายการ เช่น การใช้ in
โอเปอเรเตอร์หรือการค้นหาเชิงเส้น
ในคู่มือนี้ เราจะพูดถึงสี่วิธีในการค้นหารายการในรายการ เราอธิบายตัวอย่างของแต่ละวิธีเพื่อให้คุณได้เรียนรู้วิธีทำงาน
Python ค้นหาในรายการโดยใช้ “in”
Python มีโอเปอเรเตอร์พิเศษที่เรียกว่า in
. ตัวดำเนินการนี้ตรวจสอบเพื่อดูว่ามีค่าอยู่ในรายการหรือไม่ ตัวดำเนินการนี้บางครั้งเรียกว่า "ตัวดำเนินการสมาชิก" เนื่องจากจะตรวจสอบว่าค่าเป็นสมาชิกของรายการหรือไม่
ในตัวอย่างนี้ เราเปิดร้านขายรองเท้าและต้องการตรวจสอบว่ามีรองเท้าในสต็อกหรือไม่ วิธีหนึ่งในการทำเช่นนี้คือการใช้ in
โอเปอเรเตอร์
เริ่มต้นด้วยการกำหนดรายการรองเท้า:
shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"]
ต่อไป เราขอให้ผู้ใช้ใส่รองเท้าเพื่อค้นหา:
to_find = input("What shoe are you looking for? ")
เราใช้คำสั่ง input() เพื่อรวบรวมชื่อรองเท้า ต่อไป เราใช้คำสั่ง “if” เพื่อตรวจสอบว่ารองเท้าที่ผู้ใช้ป้อนนั้นอยู่ในรายการรองเท้าของเราหรือไม่:
if to_find in shoes: print("{} shoes are in stock.".format(to_find)) else: print("{} shoes are not in stock.".format(to_find))
if
ของเรา คำสั่งจะดำเนินการหากพบรองเท้าที่ผู้ใช้ป้อนในรายการของเรา มิฉะนั้น else
คำสั่งจะทำงาน ลองใช้รหัสของเรา:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
What shoe are you looking for? Adidas Runfalcon Adidas Runfalcon shoes are in stock.
รหัสของเราระบุว่ารองเท้า “Adidas Runfalcon” มีอยู่ในสต็อกเรียบร้อยแล้ว สิ่งนี้ทำให้ if
. ของเรา คำสั่งที่จะดำเนินการ
Python ค้นหาในรายการโดยใช้การค้นหาเชิงเส้น
การค้นหาเชิงเส้นคืออัลกอริธึมการค้นหาอย่างง่ายที่จะค้นหารายการในรายการ การค้นหาเชิงเส้นเริ่มต้นที่ปลายด้านหนึ่งของรายการ และเปรียบเทียบค่ากับทุกองค์ประกอบในรายการ หากค่านั้นอยู่ในรายการ การค้นหาเชิงเส้นจะส่งกลับตำแหน่งของรายการ
เริ่มต้นด้วยการเขียนฟังก์ชันที่ทำการค้นหาเชิงเส้นของเรา:
def linear_search(array, to_find): for i in range(0, len(array)): if array[i] == to_find: return i return -1
รหัสของเราใช้การวนซ้ำ "for" เพื่อวนซ้ำทุกรายการในรายการ "อาร์เรย์" หากพบรายการนั้น ตำแหน่งดัชนีของรายการนั้นจะถูกส่งกลับไปยังโปรแกรมหลัก หากไม่พบรายการหลังจากค้นหารายการทั้งหมดแล้ว -1 จะถูกส่งกลับไปยังโปรแกรมหลัก
ไปที่โปรแกรมหลักของเราและเรียกใช้ฟังก์ชันของเรา:
shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"] to_find = input("What shoe are you looking for? ") found = linear_search(shoes, to_find)
รหัสนี้จะถามผู้ใช้เกี่ยวกับรองเท้าที่กำลังมองหา จากนั้นโค้ดของเราจะเรียกใช้ฟังก์ชัน linear_search เพื่อค้นหาว่ารองเท้านั้นมีอยู่ในรายการหรือไม่
สุดท้าย เราใช้ if
คำสั่งเพื่อแจ้งให้ผู้ใช้ทราบว่าพบรองเท้าหรือไม่:
if found != -1: print("{} shoes are in stock.".format(to_find)) else: print("{} shoes are not in stock.".format(to_find))
หากฟังก์ชัน linear_search ส่งคืน -1 แสดงว่าไม่พบรายการใดในรายการ if
ของเรา คำสั่งจะทำงานหากค่าที่ส่งคืนโดยฟังก์ชัน linear_search ไม่เท่ากับ -1 หากค่าเท่ากับ -1 ให้ else
คำสั่งจะทำงาน
ลองเรียกใช้รหัสของเรา:
What shoe are you looking for? Adidas Samba Adidas Samba shoes are not in stock.
รหัสของเราไม่พบรองเท้า Adidas Samba ในรายการของเรา
Python ค้นหาในรายการโดยใช้ index()
ฟังก์ชัน index() ในตัวช่วยให้คุณค้นหาตำแหน่งดัชนีของรายการในรายการ เขียนโปรแกรมหาตำแหน่งของรองเท้าในรายการโดยใช้ index()
.
ในการเริ่มต้น ให้กำหนดรายการรองเท้า เราขอให้ผู้ใช้ใส่รองเท้าที่โปรแกรมของเราจะค้นหาในรายการรองเท้าของเรา:
shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"] to_find = input("What shoe are you looking for? ")
ต่อไปเราจะใช้ index()
วิธีคืนตำแหน่งดัชนีรายการของรองเท้านั้น:
try: found = shoes.index(to_find) print("{} shoes are in stock. They are at index position {} in the list of shoes.".format(to_find, found)) except: print("{} shoes are not in stock.".format(to_find))
index()
วิธีการส่งกลับค่า ValueError หากไม่พบรายการในรายการ นั่นเป็นเหตุผลที่เราใช้เป็นส่วนหนึ่งของบล็อก "ลอง…ยกเว้น"
หากไม่พบรองเท้า จะมีการเพิ่ม ValueError ณ จุดนี้ บล็อก "ยกเว้น" จะทำงาน หากพบรองเท้า บล็อก "ลอง" จะดำเนินการสำเร็จ
เรียกใช้รหัสของเรา:
What shoe are you looking for? Adidas Gazelle Adidas Gazelle shoes are in stock. They are at index position 2 in the list of shoes.
รหัสของเราระบุว่ารองเท้า Adidas Gazelle อยู่ในสต็อกเรียบร้อยแล้ว โปรแกรมของเรายังบอกตำแหน่งที่เก็บรองเท้าในรายการของเราอีกด้วย
Python ค้นหาในรายการโดยใช้ List Comprehension
คุณพบหลายรายการในรายการที่ตรงตามเงื่อนไขบางอย่างโดยใช้ความเข้าใจรายการ
เรามีรายชื่อรองเท้าและต้องการคืนเฉพาะรองเท้าที่มีตราสินค้า Adidas เท่านั้น เราสามารถทำได้โดยใช้การทำความเข้าใจรายการ เริ่มต้นด้วยการกำหนดรายการรองเท้า:
shoes = ["Nike PG 4", "Adidas Ultraboost", "Adidas Gazelle", "Nike Air Max Verona"]
ต่อไป เราเขียนรายการความเข้าใจที่ดึงรองเท้าทั้งหมดที่มีคำว่า “Nike” ความเข้าใจรายการใช้ไวยากรณ์ที่คล้ายกับการวนซ้ำ:
nike_shoes = [shoe for shoe in shoes if "Nike" in shoe] print(nike_shoes)
นิพจน์รายการจะวนซ้ำทุกรองเท้าในรายการ "รองเท้า" นิพจน์จะตรวจสอบว่าคำว่า Nike อยู่ในชื่อรองเท้าแต่ละคู่หรือไม่ หากใช่ รองเท้านั้นจะถูกเพิ่มในรายการ “nike_shoes” มิฉะนั้นจะไม่มีอะไรเกิดขึ้น
เรียกใช้รหัสของเรา:
['Nike PG 4', 'Nike Air Max Verona']
รหัสของเราส่งคืนรายการรองเท้า Nike
บทสรุป
มีหลายวิธีในการค้นหารายการในรายการ วิธีที่นิยมมากที่สุด ได้แก่ :
- การใช้
in
ผู้ประกอบการสมาชิก - การใช้การค้นหาเชิงเส้น
- การใช้
index()
วิธีการ - การใช้ความเข้าใจรายการ
ตอนนี้คุณพร้อมแล้วที่จะค้นหารายการในรายการ Python อย่างผู้เชี่ยวชาญ coder!