Python 创建数字列表。如果排序错误,则应创建新的子列表

Python 创建数字列表。如果排序错误,则应创建新的子列表,python,sublist,Python,Sublist,a) 输入是数字列表 i/p = > [2,5,1,4,7,3,1,2,3] b) 输出应按子列表排序 o/p = > [[2,5],[1,4,7],[3],[1,2,3]] 算法 input = [2,5,1,4,7,3,1,2,3] output = [[]] for idx,val in enumerate(input): if idx > 0 and input[idx-1] > input[idx]: output.append([

a) 输入是数字列表

i/p = > [2,5,1,4,7,3,1,2,3]
b) 输出应按子列表排序

o/p = > [[2,5],[1,4,7],[3],[1,2,3]]

算法

input = [2,5,1,4,7,3,1,2,3]

output = [[]]
for idx,val in enumerate(input):
    if idx > 0 and input[idx-1] > input[idx]:
        output.append([val])
    else:
        output[-1].append(val)

print output
输出为

[[2, 5], [1, 4, 7], [3], [1, 2, 3]]
算法的文字说明:

创建带有空子列表的输出列表。枚举输入列表。如果前一个元素(如果存在)不大于实际元素,则将该元素添加到输出的最后一个子列表中。如果较大,请在输出中创建一个新的子列表,并将其添加到此新的子列表。

另一种解决方案:

def sortedsublist():
'''create sorted sublist from the given list'''
    inputl = []
    sortedl = []
    subl = []
    inputl = [7,8,9,2,3,1,2,3,1,2,1]
    for i in range(len(inputl)):
    try:
    if inputl[i] <= inputl[i+1]:
        subl.append(inputl[i])
    else:
        subl.append(inputl[i])
        sortedl.append(subl)
        subl= []    
     except IndexError:
        subl.append(inputl[i])
        sortedl.append(subl)
        subl = []
    print sortedl   
    return
if __name__="main":
    sortedsublist()
def sortedPublist():
''从给定列表创建已排序的子列表''
inputl=[]
sortedl=[]
subl=[]
inputl=[7,8,9,2,3,1,2,3,1,2,1]
对于范围内的i(len(inputl)):
尝试:

如果inputl[i]正常,那么您似乎需要创建一个已排序子列表的列表。到目前为止您尝试了什么?这不是一个真正的问题,请提供文本。@ParagGhodaskar您看到我的答案了吗?@ParagGhodaskar添加了算法的解释。你明白了吗?是的,科迪。我在尝试气泡排序,2>5,5>1为假,所以从原始列表中删除2,5并继续对剩余列表进行排序。我们怎么做呢?@Paraghodaskar你不必做任何排序。原因如果排序错误,请创建新的子列表。是不是我应该从输入列表中删除添加到子列表中的元素。不,kordi您提供的解决方案正是我所需要的。我们可以使用冒泡排序来完成。例如:5>1将2,5放入子列表,继续执行剩余列表,再次排序到7,依此类推。