जब लिस्ट्स में डिसजॉइंट (असंयुक्त) स्ट्रिंग्स ढूंढनी हों, तो एक मेथड परिभाषित की जाती है जो दो पैरामीटर लेती है, और lambda व reduce मेथड्स का उपयोग 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' नामक एक मेथड परिभाषित की गई है जो दो पैरामीटर लेती है।
यदि पहला पैरामीटर ट्रू नहीं है, और दो पैरामीटर्स के साथ उपयोग किए गए 'reduce' और 'lambda' मेथड्स ट्रू नहीं हैं, तो yield ऑपरेटर का उपयोग परिणाम निर्धारित करने के लिए किया जाता है, जिसे टुपल में भी कन्वर्ट किया जाता है।
अन्यथा, yield ऑपरेटर का उपयोग लिस्ट कॉम्प्रिहेंशन के साथ किया जाता है, जिसमें मेथड को अलग पैरामीटर्स के साथ फिर से कॉल किया जाता है।
मेथड के बाहर, स्ट्रिंग्स की दो लिस्ट्स परिभाषित की गई हैं और कंसोल पर प्रदर्शित की गई हैं।
इन दो लिस्ट्स को पास करके मेथड को कॉल किया जाता है।
इसे लिस्ट में कन्वर्ट करके एक वेरिएबल में असाइन किया जाता है।
यह वेरिएबल आउटपुट के रूप में कंसोल पर प्रदर्शित होता है।