หลายครั้งระหว่างการวิเคราะห์ข้อมูลด้วยลิสต์ เราพบสถานการณ์ที่ต้องหาว่าองค์ประกอบที่กำหนดปรากฏอย่างน้อย N ครั้งในลิสต์ที่กำหนดหรือไม่ เช่น 5 ปรากฏอย่างน้อย 3 ครั้งในลิสต์หรือไม่ ในบทความนี้เราจะดู 2 วิธีในการทำสิ่งนี้
การนับจำนวนครั้งที่เกิดขึ้น
ในวิธีด้านล่างเรารับตัวเลขและจำนวนครั้งที่เกิดขึ้นเป็นอินพุต จากนั้นเราออกแบบลูปเพื่อนับจำนวนครั้ง ถ้าค่านับมากกว่าหรือเท่ากับค่าที่ต้องการ เราพิมพ์ผลลัพธ์เป็น true มิฉะนั้น false
ตัวอย่าง
listA = [1, 3, 5, 5, 4, 5]
# Given list
print("Given list: ", listA)
# element to be checked
elem = 5
# Number of occurrences
N = 3
res = 0
for e in listA:
if e == elem:
res = res + 1
if res >= N:
res = True
else:
res = False
# printing result
print("Does %d occur atleast %d times ? :" % (elem, N), res)
การรันโค้ดด้านบนให้ผลลัพธ์ดังนี้:
ผลลัพธ์
Given list: [1, 3, 5, 5, 4, 5] Does 5 occur atleast 3 times ? : True
การใช้ Islice และ next
ในวิธีนี้เราสร้างลิสต์ใหม่ที่มีตัวเลขที่กำหนดจากลิสต์ต้นฉบับ ลิสต์ใหม่นี้มีทุกครั้งที่ตัวเลขที่กำหนดปรากฏ標記เป็น true จากนั้นเราออกแบบเมธอด islice ที่จะคำนวณว่ามีค่า True ตามจำนวนที่ต้องการในลิสต์ใหม่อยู่หรือไม่ ตามนั้นจำนวนที่ต้องการจะถูกทำเครื่องหมายเป็น true หรือ false
ตัวอย่าง
from itertools import islice
listA = [2, 11, 9, 2, 4, 2]
# Given list
print("Given list: ", listA)
# element to be checked
elem = 2
# Number of occurrences
N = 3
elem_list = []
# Create
for i in listA:
if i == elem:
elem_list.append(True)
res = next(islice(elem_list, N-1, None), False)
# printing result
print("Does %d occur atleast %d times ? :" % (elem, N), res)
การรันโค้ดด้านบนให้ผลลัพธ์ดังนี้:
ผลลัพธ์
Given list: [2, 11, 9, 2, 4, 2] Does 2 occur atleast 3 times ? : True