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))]