เมื่อจำเป็นต้องแยกรายการออกเป็นคู่ทูเพิลที่เป็นไปได้ทั้งหมด สามารถกำหนดเมธอดที่รับรายการเป็นพารามิเตอร์ และใช้ความเข้าใจรายการเพื่อทำซ้ำผ่านรายการและใช้วิธี 'ขยาย'
ตัวอย่าง
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน
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) ผลลัพธ์
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)]]
คำอธิบาย
-
มีการกำหนดเมธอดชื่อ 'determine_pairings ซึ่งรับรายการเป็นพารามิเตอร์
-
ความยาวของรายการถูกตรวจสอบให้มากกว่า 1
-
พิจารณาองค์ประกอบที่ไม่รวมองค์ประกอบแรกและเรียกวิธีการอีกครั้ง
-
สิ่งนี้ถูกกำหนดให้กับตัวแปร
-
รายการมีการวนซ้ำอีกครั้ง และองค์ประกอบแรกและองค์ประกอบดัชนีจะถูกเพิ่มไปยังตัวแปร
-
ส่งคืนเป็นเอาต์พุต