Duyệt list tuple, gộp các tuple liền kề có cùng phần tử đầu tiên bằng cách nối các phần tử còn lại.
Ví dụ
my_list = [(43, 15), (66, 98), (64, 80), (14, 9), (47, 17)]
print("List gốc:", my_list)
result = []
for sub in my_list:
if result and result[-1][0] == sub[0]:
# Gộp: mở rộng tuple cuối với các phần tử từ index 1 trở đi
result[-1].extend(sub[1:])
else:
# Thêm mới: chuyển tuple thành list để có thể extend sau
result.append(list(sub))
# Chuyển lại thành tuple
result = list(map(tuple, result))
print("Kết quả:", result)
Kết quả
List gốc: [(43, 15), (66, 98), (64, 80), (14, 9), (47, 17)] Kết quả: [(43, 15), (66, 98), (64, 80), (14, 9), (47, 17)]
Giải thích
- Khởi tạo list rỗng
result. - Duyệt từng tuple
sub. - Nếu
resultkhông rỗng và phần tử đầu của tuple cuối trong result trùng vớisub[0], thì gộp:extend(sub[1:]). - Ngược lại, thêm
list(sub)vào result (dùng list để mutable). - Cuối cùng chuyển các list con thành tuple.
- Ví dụ này không có tuple nào trùng phần tử đầu nên kết quả không đổi.