猿问

循环以在不同的子列表中拆分列表

我想拆分一个数字列表,将序列的第一个数字与下一个数字进行比较,以找出数字是否更大,在这种情况下,我们创建该子列表,直到找到一个较小的数字。和彼此


Inputdata = [45,42,78,120,47,2,50,32,34]

比较45和42更大不是,所以仅用45创建列表,然后从42开始与下一个比较,直到找到小于42的列表:


Output = [45] [42,78,120,47] [2,50,32,34]

这是我的代码:


data = [45,42,78,120,47,2,50,32,34]


m = (len(data))

i=0

list1=[]

emptylist = True

while i <= m:


 for j in range(i+1,len(data)-1):



    if data[i] < data[j]:

        list1.append(data[j])

        emptylist = False


    else:


        if emptylist:


            list1.insert(0,data[i])

            print list1

            i += j

            list1 = []

            emptylist = True

            break


        else:

            list1.insert(0,data[i])

            print list1

            print j

            i += j

            print i

            list1 = []

            emptylist = True

            i += j

            break

我的输出是:


[45]

[42, 78, 120, 47]

我找不到问题...有什么建议吗?谢谢


PD1。这个想法是创建子列表,其中第一个元素是较小的元素。


烙印99
浏览 131回答 2
2回答

一只甜甜圈

L = [45, 42, 78, 120, 47, 2, 50, 32, 34]cond = L[0]res = [[cond]]for item in L[1:]:&nbsp; &nbsp; if item > cond:&nbsp; &nbsp; &nbsp; &nbsp; res[-1].append(item)&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; cond = item&nbsp; &nbsp; &nbsp; &nbsp; res.append([cond])现在res是:[[45], [42, 78, 120, 47], [2, 50, 32, 34]]细节:索引0为您提供了第一个元素:>>> cond = L[0]>> cond45我们创建res将保存结果的新列表,然后将45,即第一个元素放入列表,该列表又成为以下内容的第一个元素res:>>> res = [[cond]]>>> res[[45]]现在,我们从第二个元素开始遍历列表。L[1:]给出此子列表:>>> L[1:][42, 78, 120, 47, 2, 50, 32, 34]注意,res[-1]始终为我们提供列表的当前最后一个元素。此本身必须是列表,item如果大于我们的数字,我们会附加下一个数字()cond。否则,我们将在仅包含一个element的情况下追加一个新的子列表res.append([cond])。在下一轮中,我们将执行相同的操作。因此,构成我们最后一个元素的列表res将增长到item > cond。如果没有,我们将添加一个新列表cond。冲洗并重复直到原始列表的末尾。变化该L[1:]做的一个副本L。这不是最有效的方法。如果我们L 变成一个迭代器,我们可以避免这种情况:L = iter([45,42,78,120,47,2,50,32,34])cond = next(L)res = [[cond]]for item in L:&nbsp; &nbsp; if item > cond:&nbsp; &nbsp; &nbsp; &nbsp; res[-1].append(item)&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; cond = item&nbsp; &nbsp; &nbsp; &nbsp; res.append([cond])每个都next(L)将为我们提供迭代器中的下一项。for循环将遍历其余部分。因此,在我们的案例中,它从第二个元素开始,因为我们调用了next()一次。
随时随地看视频慕课网APP

相关分类

Python
我要回答