ได้รับลิสต์มา เราอาจต้องตรวจสอบลำดับขององค์ประกอบ ในบทความนี้เราจะตรวจสอบว่าองค์ประกอบในลิสต์อยู่ในลำดับเพิ่มขึ้นอย่างเคร่งครัดหรือไม่ โปรแกรมด้านล่างบรรลุวัตถุประสงค์นั้น
ด้วย all และ zip
ในวิธีนี้เราตัดสไลด์แต่ละองค์ประกอบเปรียบเทียบค่ากับองค์ประกอบถัดไปที่ตัดสไลด์ ถ้าการเปรียบเทียบทั้งหมดเป็นจริง เราสรุปว่าลิสต์เรียงเพิ่มขึ้นอย่างเคร่งครัด
ตัวอย่าง
listA = [11, 23, 42, 51, 67] # Given list
print("Given list : ", listA)
# Apply all and range
if (all(i < j for i, j in zip(listA, listA[1:]))):
print("Yes, List is sorted.")
else:
print("No, List is not sorted.")
# Checking again
listB = [11, 23, 21, 51, 67]
print("Given list : ", listB)
# Apply all and range
if (all(i < j for i, j in zip(listB, listB[1:]))):
print("Yes, List is sorted.")
else:
print("No, List is not sorted.")
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list : [11, 23, 42, 51, 67] Yes, List is sorted. Given list : [11, 23, 21, 51, 67] No, List is not sorted.
ด้วย itertools.starmap
ฟังก์ชันนี้สร้าง iterator ที่คำนวณฟังก์ชันโดยใช้ arguments ที่ได้จาก iterable เรา zip ลิสต์ขององค์ประกอบหลังจากตัดสไลด์ทีละตัวแล้วนำไปผ่านตัวดำเนินการน้อยกว่าหรือเท่ากัน โปรดสังเกตเราใช้สตริงแทนตัวเลขในตัวอย่างด้านล่าง
ตัวอย่าง
import operator
import itertools
listA = ['Mon','Tue','Sun'] # Given list
print("Given list : ", listA)
# Apply all and range
if all(itertools.starmap(operator.le, zip(listA, listA[1:]))):
print("Yes, List is sorted.")
else:
print("No, List is not sorted.")
# Checking again
listB = ['Mon','Sun','Tue']
print("Given list : ", listB)
# Apply all and range
if all(itertools.starmap(operator.le, zip(listB, listB[1:]))):
print("Yes, List is sorted.")
else:
print("No, List is not sorted.")
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list : ['Mon', 'Tue', 'Sun'] No, List is not sorted. Given list : ['Mon', 'Sun', 'Tue'] Yes, List is sorted.