Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Lọc tuple các phần tử liên tiếp (Consecutive elements Tuples)

Khi cần lọc các tuple có các phần tử tạo thành dãy số liên tiếp (cách nhau 1), ta định nghĩa hàm kiểm tra chỉ số.

Ví dụ

def check_consec_tuple_elem(my_tuple):
    for idx in range(len(my_tuple) - 1):
        if my_tuple[idx + 1] != my_tuple[idx] + 1:
            return False
    return True

my_tuple = [(23, 24, 25, 26), (65, 66, 78, 29), (11, 28, 39), (60, 61, 62, 63)]
print("Danh sách tuple:")
print(my_tuple)

my_result = []
for elem in my_tuple:
    if check_consec_tuple_elem(elem):
        my_result.append(elem)

print("Kết quả (tuple liên tiếp):")
print(my_result)

Kết quả đầu ra

Danh sách tuple:
[(23, 24, 25, 26), (65, 66, 78, 29), (11, 28, 39), (60, 61, 62, 63)]
Kết quả (tuple liên tiếp):
[(23, 24, 25, 26), (60, 61, 62, 63)]

Giải thích

  • Hàm kiểm tra: với mỗi cặp liền kề, nếu phần tử sau ≠ phần tử trước + 1 → không liên tiếp.
  • (23,24,25,26): 24=23+1, 25=24+1, 26=25+1 → True.
  • (65,66,78,29): 66=65+1 ✓, 78≠66+1 ✗ → False.
  • (60,61,62,63): toàn bộ +1 → True.

List comprehension:

my_result = [t for t in my_tuple if all(t[i+1] == t[i]+1 for i in range(len(t)-1))]