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

Làm phẳng tuple chứa list thành tuple trong Python

Hàm đệ quy flatten_tuple biến cấu trúc tuple lồng nhau phức tạp thành tuple phẳng chỉ chứa các tuple con cấp 1.

Ví dụ

def flatten_tuple(t):
    # Nếu t là tuple độ dài 2 và phần tử đầu không phải tuple -> trả về tuple chứa t
    if isinstance(t, tuple) and len(t) == 2 and not isinstance(t[0], tuple):
        return (t,)
    result = []
    for sub in t:
        result.extend(flatten_tuple(sub))
    return tuple(result)

my_tuple = ((35, 46), ((67, 70), (8, 11), (10, 111)), ((21, 12), (3, 4)))
print("Tuple gốc:", my_tuple)
print("Tuple làm phẳng:", flatten_tuple(my_tuple))

Kết quả

Tuple gốc: ((35, 46), ((67, 70), (8, 11), (10, 111)), ((21, 12), (3, 4)))
Tuple làm phẳng: ((35, 46), (67, 70), (8, 11), (10, 111), (21, 12), (3, 4))

Giải thích

  • Hàm kiểm tra nếu tuple có độ dài 2 và phần tử đầu không phải tuple -> coi là tuple lá, trả về tuple chứa nó.
  • Ngược lại, duyệt qua từng phần tử con, gọi đệ quy và mở rộng kết quả.
  • Cuối cùng chuyển list kết quả thành tuple.
  • Phù hợp cho cấu trúc tuple lồng nhau không đều.