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

Gộp tuple nếu phần tử đầu tiên trùng nhau trong Python

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 result không rỗng và phần tử đầu của tuple cuối trong result trùng với sub[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.