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.