Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหา k คำที่ยาวที่สุดในรายการที่กำหนดใน Python


เรามีสถานการณ์ที่เราต้องเลือกคำที่ยาวที่สุด 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']