เมื่อต้องการนับจำนวนยอด (peak: ตัวกลางน้อยกว่าทั้งสองข้าง) และหุบเขา (valley: ตัวกลางมากกว่าทั้งสองข้าง) ในลิสต์ สามารถใช้ลูป iteration และเงื่อนไขเปรียบเทียบได้
ตัวอย่าง
my_list = [11, 12, 24, 12, 36, 17, 28, 63]
print("The list is :")
print(my_list)
my_result = 0
for index in range(1, len(my_list) - 1):
if my_list[index + 1] > my_list[index] < my_list[index - 1] or my_list[index + 1] < my_list[index] > my_list[index - 1]:
my_result += 1
print("The result is :")
print(my_result)
ผลลัพธ์
The list is : [11, 12, 24, 12, 36, 17, 28, 63] The result is : 4
คำอธิบาย
กำหนดลิสต์ตัวเลขและตัวนับ my_result=0
วนลูปดัชนี 1 ถึง len-2 (ไม่รวมขอบ) ตรวจสอบสมาชิกกลาง
เงื่อนไข Peak:
my_list[index+1] > my_list[index] < my_list[index-1](น้อยกว่าทั้งคู่)เงื่อนไข Valley:
my_list[index+1] < my_list[index] > my_list[index-1](มากกว่าทั้งคู่)ถ้าเป็น Peak หรือ Valley เพิ่มตัวนับ
ตัวอย่าง: index=2(24>12,24>12 peak), index=3(12<24,12<36 valley), index=4(36>12,36>17 peak), index=5(17<36,17<28 valley) = 4 จุด