सूची में समूह की बढ़ती संख्या [डुप्लिकेट]

Nov 24 2020

मैं एक सूची में लगातार बढ़ते पूर्णांक को एक साथ कैसे जोड़ सकता हूं? उदाहरण के लिए, मेरे पास पूर्णांकों की निम्नलिखित सूची है:

numbers = [0, 5, 8, 3, 4, 6, 1]

मैं तत्वों को एक साथ समूह में रखना चाहूंगा:

[[0, 5, 8], [3, 4, 6], [1]]

जबकि अगला पूर्णांक पिछले से अधिक है, उसी नेस्टेड सूची में जोड़ते रहें; अगला पूर्णांक छोटा है, नेस्टेड सूची को मुख्य सूची में जोड़ें और फिर से शुरू करें।

मैंने कुछ अलग तरीकों की कोशिश की है (जबकि लूप, लूप, एन्युमरेट और रेंज के लिए), लेकिन यह पता नहीं लगा सकता कि कैसे इसे एक ही नेस्टेड सूची में जोड़ा जाए, जब तक कि अगला पूर्णांक बड़ा न हो।

result = []

while (len(numbers) - 1) != 0:
    group = []

    first = numbers.pop(0)
    second = numbers[0]

    while first < second:
        group.append(first)
        
        if first > second:
            result.append(group)
        break

जवाब

8 megargayu Nov 24 2020 at 06:37

आप लूप के लिए उपयोग कर सकते हैं:

numbers = [0, 5, 8, 3, 4, 6, 1]
result = [[]]
last_num = numbers[0] # last number (to check if the next number is greater or equal)
for number in numbers:
    if number < last_num:
        result.append([]) # add a new consecutive list
    result[-1].append(number) 
    last_num = number # set last_num to this number, so it can be used later
print(result)

नोट: यह उपयोग नहीं करता है .pop(), इसलिए numbersसूची बरकरार है। इसके अलावा, एक लूप = ओ (एन) समय जटिलता !!

2 piterbarg Nov 24 2020 at 06:46

यदि पंडों को अनुमति दी जाती है, तो मैं यह करूंगा:

import pandas as pd
numbers = [0, 5, 8, 3, 4, 6, 1]
df = pd.DataFrame({'n':numbers})
[ g['n'].values.tolist() for _,g in df.groupby((df['n'].diff()<0).cumsum())]

का उत्पादन

[[0, 5, 8], [3, 4, 6], [1]]
1 ppwater Nov 24 2020 at 06:47

तुम यह केर सकते हो:

numbers = [0, 5, 8, 3, 4, 6, 1]
result = []
while len(numbers) != 0:
    secondresult = []
    for _ in range(3):
        if numbers != []:
            toappend = numbers.pop(0)
            secondresult.append(toappend)
        else:
            continue
    result.append(secondresult)
print(result)

और छोरों के लिए उपयोग करें। और उन्हें दूसरे स्तर पर परिणाम और परिणाम के लिए संलग्न करें