เรามีสถานการณ์ที่เราต้องเลือกคำที่ยาวที่สุด n อันดับแรกจากรายการที่มีคำหลายคำที่มีความยาวต่างกัน ในบทความนี้เราจะเห็นแนวทางต่างๆ เพื่อให้บรรลุสิ่งนั้น
ด้วย count() และ sorted()
อันดับแรก เราจัดเรียงองค์ประกอบของรายการในลำดับที่กลับกัน เพื่อให้คำที่ยาวที่สุดอยู่ที่ตอนต้นของรายการ จากนั้นให้หาความยาวของแต่ละคำและเพิ่มผลลัพธ์ของการนับให้กับตัวแปร สุดท้าย ให้แบ่งส่วนของคำที่ยาวที่สุดที่เราต้องการ
ตัวอย่าง
from itertools import count def longwords(l, x): c = count() return sorted(l, key=lambda i: (len(i), next(c)), reverse=True)[:x] listA = ['Earth','Moonshine','Aurora','Snowflakes','Sunshine'] n = 2 print(longwords(listA, n))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
['Snowflakes', 'Moonshine']
มีซิปและระบุ
ในแนวทางนี้ เราใช้ enumerate เพื่อแสดงรายการแต่ละองค์ประกอบของรายการ จากนั้นใช้ฟังก์ชัน sorted และ zip เพื่อรับการนับ ค่าความยาวติดลบบ่งบอกถึงลำดับการเรียงลำดับย้อนกลับ และสุดท้ายเราจะแบ่งจำนวนการนับที่ต้องการ
ตัวอย่าง
def longwords(l, x): idx, words = zip(*sorted(enumerate(l), key = lambda i: (-len(i[1]), -i[0]))[:x]) return list(words) listA = ['Earth','Moonshine','Aurora','Snowflakes','Sunshine'] n = 2 print(longwords(listA, n))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
['Snowflakes', 'Moonshine']