मानों की एक सूची दी गई है, हम जानने में रुचि रखते हैं कि बूलियन मान किन स्थितियों पर एक सन्निकट सूची के रूप में मौजूद हैं। जिसका अर्थ है कि जब हम एक मान का सामना करते हैं जो TRUE है तो उस स्थिति से लगातार TRUE मान तब तक रहता है जब तक FALSE मान नहीं मिल जाता। इसी तरह जब FALSE मिलता है तो तब तक सन्निकट FALSE मान रहता है जब तक TRUE नहीं मिल जाता।
itertools के साथ
हम itertools मॉड्यूल से accumulate के साथ groupby का उपयोग कर सकते हैं। इस उदाहरण में हम एक दी गई सूची लेते हैं और फिर मानों को ट्रैक करने के लिए accumulate फ़ंक्शन लागू करते हैं जो sum फ़ंक्शन का उपयोग करके groupby द्वारा एक साथ लाए जाते हैं। सूची में अंतिम मान वह अंतिम स्थिति है जहां दी गई सूची समाप्त होती है।
उदाहरण
from itertools import accumulate, groupby # दी गई सूची listA = [False, True, True, False, False] print("दी गई सूची : \n", listA) # accumulate लागू करना res = [0] + list(accumulate(sum(1 for x in y) for x, y in groupby(listA))) # परिणाम print("सन्निकट मानों की रेंज के लिए स्थितियां:\n ", res)आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित परिणाम मिलता है -
दी गई सूची : [False, True, True, False, False] सन्निकट मानों की रेंज के लिए स्थितियां: [0, 1, 3, 5]
enumerate का उपयोग करके
enumerate फ़ंक्शन के साथ zip फ़ंक्शन का उपयोग प्रत्येक तत्व की तुलना अगले वाले से करके स्थिति सूचीबद्ध करने के लिए किया जाता है। यदि वे बराबर नहीं हैं तो एक नया स्थिति मान सन्निकट रेंज के प्रारंभ बिंदु के रूप में माना जाता है।
उदाहरण
# दी गई सूची listA = [False, True, True, False, False] print("दी गई सूची : \n", listA) # enumerate लागू करना res = [e for e, (x, y) in enumerate(zip([2] + listA, listA + [2])) if x != y] # परिणाम print("सन्निकट मानों की रेंज के लिए स्थितियां:\n ", res)आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित परिणाम मिलता है -
दी गई सूची : [False, True, True, False, False] सन्निकट मानों की रेंज के लिए स्थितियां: [0, 1, 3, 5]