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

Python - Chia list thành tất cả các cặp tuple có thể

Khi cần chia list thành tất cả cặp tuple có thể, định nghĩa phương thức nhận list, dùng list comprehension lặp và extend.

Ví dụ

def determine_pairings(my_list):
    if len(my_list) <= 1:
        return [my_list]
    result = [[my_list[0]] + element for element in determine_pairings(my_list[1:])]
    for index in range(1, len(my_list)):
        result.extend([[(my_list[0], my_list[index])] + element
                       for element in determine_pairings(my_list[1:index] + my_list[index + 1:])])
    return result

my_list = [56, 31, 78, 0]
print("The list is:")
print(my_list)

my_result = determine_pairings(my_list)
print("The resultant pairs are:")
print(my_result)

Đầu ra

The list is: [56, 31, 78, 0]
The resultant pairs are: [[56, 31, 78, 0], [56, 31, (78, 0)], [56, (31, 78), 0], [56, (31, 0), 78], [(56, 31), 78, 0], [(56, 31), (78, 0)], [(56, 78), 31, 0], [(56, 78), (31, 0)], [(56, 0), 31, 78], [(56, 0), (31, 78)]]

Giải thích

  • Hàm determine_pairings đệ quy sinh tất cả cách phân hoạch list thành đơn lẻ và cặp tuple.
  • Kiểm tra độ dài <= 1 trả về list gốc.
  • Kết hợp phần tử đầu với kết quả đệ quy phần còn lại.
  • Lặp index từ 1, ghép cặp (first, index) với đệ quy phần giữa và phần sau.
  • Trả về tất cả tổ hợp.