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

โปรแกรม Python ดึงแถวที่มีความต่างระหว่างสมาชิกคงที่ (Arithmetic Sequence)

แนวคิด

หา sublist (แถว) ที่สมาชิกเรียงตัวเป็นเลขคณิต (Arithmetic Sequence) คือ ความต่างระหว่างสมาชิกติดกันทุกคู่เท่ากัน เช่น [11, 12, 13] diff = 1

ตัวอย่างโค้ด

my_list = [[31, 27, 10], [8, 11, 12], [11, 12, 13], [6, 9, 10]]
print("ลิสต์ต้นฉบับ:", my_list)

my_result = []
for row in my_list:
    if len(row) < 2:
        continue  # ข้ามแถวที่มีสมาชิกน้อยกว่า 2
    diff = row[1] - row[0]
    is_arithmetic = True
    for i in range(1, len(row) - 1):
        if row[i+1] - row[i] != diff:
            is_arithmetic = False
            break
    if is_arithmetic:
        my_result.append(row)

print("แถวที่เป็นเลขคณิต:", my_result)

ผลลัพธ์

ลิสต์ต้นฉบับ: [[31, 27, 10], [8, 11, 12], [11, 12, 13], [6, 9, 10]]
แถวที่เป็นเลขคณิต: [[11, 12, 13]]

คำอธิบาย

  • คำนวณ diff จากคู่แรก row[1] - row[0]
  • ตรวจสอบคู่ถัดไปทุกคู่ว่าตรงกับ diff เดียวกันหรือไม่
  • ใช้ flag is_arithmetic และ break เพื่อหยุดเร็วเมื่อพบไม่ตรง

เวอร์ชัน Pythonic ด้วย all()

my_result = [
    row for row in my_list 
    if len(row) >= 2 and all(row[i+1] - row[i] == row[1] - row[0] for i in range(len(row)-1))
]