Tạo danh sách các cặp phần tử liền kề (trước, sau) cho mỗi phần tử trong danh sách. Phần tử đầu không có trước, phần tử cuối không có sau. Sử dụng enumerate().
Mã nguồn
def find_adjacent_elements(my_list):
my_result = []
for index, ele in enumerate(my_list):
if index == 0:
my_result.append((None, my_list[index + 1]))
elif index == len(my_list) - 1:
my_result.append((my_list[index - 1], None))
else:
my_result.append((my_list[index - 1], my_list[index + 1]))
return my_result
my_list = [13, 37, 58, 12, 41, 25, 48, 19, 23]
print("Danh sách:", my_list)
print("Phần tử liền kề:", find_adjacent_elements(my_list))
Kết quả
Danh sách: [13, 37, 58, 12, 41, 25, 48, 19, 23] Phần tử liền kề: [(None, 37), (13, 58), (37, 12), (58, 41), (12, 25), (41, 48), (25, 19), (48, 23), (19, None)]
Giải thích
- Index 0: chỉ có phần tử sau →
(None, next). - Index cuối: chỉ có phần tử trước →
(prev, None). - Index giữa: cả trước và sau →
(prev, next). - Trả về list các tuple (previous, next).
Ứng dụng
Tính gradient, phát hiện biên, smoothing, phân tích chuỗi thời gian.
Cách khác: zip
# Cặp (current, next)
pairs = list(zip(my_list, my_list[1:]))
# Cặp (prev, current)
pairs = list(zip(my_list[:-1], my_list[1:]))