เมื่อจำเป็นต้องค้นหาสตริงที่ไม่เกี่ยวข้องกันในรายการ จะมีการกำหนดเมธอดที่ใช้พารามิเตอร์สองตัว และใช้แลมบ์ดาและลดเมธอดด้วยเงื่อนไข 'if' เพื่อกำหนดผลลัพธ์
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ตัวอย่าง
from functools import reduce def determine_disjoint_pairs(disjoint_data, my_result=[]): if not disjoint_data and not reduce(lambda a, b: set(a) & set(b), my_result): yield tuple(my_result) elif disjoint_data: yield [idx for k in disjoint_data[0] for idx in determine_disjoint_pairs(disjoint_data[1:], my_result + [k])] my_list_1 = ["python", "is", "fun"] my_list_2 = ["its", "awesome", "learning"] print("The first list is : ") print(my_list_1) print("The second list is :") print(my_list_2) my_result = list(determine_disjoint_pairs([my_list_1, my_list_2])) print("The result is :") print(my_result)
ผลลัพธ์
The first list is : ['python', 'is', 'fun'] The second list is : ['its', 'awesome', 'learning'] The result is : [('fun', 'its'), ('fun', 'awesome')]
คำอธิบาย
-
วิธีการชื่อ 'determine_disjoint_pairs' ถูกกำหนดโดยใช้พารามิเตอร์สองตัว
-
หากพารามิเตอร์แรกไม่เป็นความจริง และวิธีการ "ลด" และ "แลมบ์ดา" ที่ใช้กับพารามิเตอร์สองตัวไม่เป็นความจริง ตัวดำเนินการผลตอบแทนจะถูกนำมาใช้เพื่อกำหนดผลลัพธ์ ซึ่งจะถูกแปลงเป็นทูเพิลด้วย
-
มิฉะนั้น ตัวดำเนินการผลตอบแทนพร้อมกับความเข้าใจรายการจะถูกใช้โดยการเรียกเมธอดอีกครั้งด้วยชุดพารามิเตอร์อื่น
-
นอกเมธอด จะมีการกำหนดรายการสตริงสองรายการและแสดงบนคอนโซล
-
วิธีการนี้เรียกว่าโดยผ่านสองรายการนี้
-
มันถูกแปลงเป็นรายการและถูกกำหนดให้กับตัวแปร
-
ตัวแปรนี้แสดงเป็นเอาต์พุตบนคอนโซล