इसलिए उदाहरण के लिए, मैं चाहता हूं कि कोड '01000110' इनपुट के लिए '5' लौटाए, क्योंकि आवर्ती अंकों के ब्लॉक '0', '1', '000', '11', '0' हैं। मैं इस समस्या से निपटने का कोई तरीका नहीं निकाल सकता। सभी मदद/टिप्पणियों की सराहना की जाती है।

0
Anotomica 29 मार्च 2018, 17:32

2 जवाब

लंबाई l . के साथ 0s और 1s की सूची दी गई है

array = numpy.random.randint(0, 2, (l))

इस कोड द्वारा लगातार क्षेत्रों की संख्या दी गई है (अनुकूलित नहीं, केवल अवधारणा दिखाने के लिए)

count = 1
current_digit = array[0]
for digit in array:
    if digit != current_digit:
        count += 1
        current_digit = digit
count

उदाहरण, साथ

array = [0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0]

क्षेत्रों की संख्या है

count = 9
0
HitLuca 29 मार्च 2018, 14:40

फ़ंक्शन groupbyitertools मॉड्यूल में एक प्राकृतिक समाधान प्रदान करता है :

>>> len(list(itertools.groupby('01000110')))
5

जैसा कि @chrisz बताते हैं, आप len(list()) को sum() से बदलकर इसे थोड़ा तेज कर सकते हैं।

2
user3483203 29 मार्च 2018, 16:07