对列表中的升序值进行分组

Group ascending values in list

如果我有以下值列表:

a = [1,1,2,3,3,3,3,4,4,1,2,2,2,3,3,4,4,4,1,1,2,3,4,4,4]

如何对这些值进行分组以获得以下结果:

b = [[1,1,2,3,3,3,3,4,4], [1,2,2,2,3,3,4,4,4], [1,1,2,3,4,4,4]]

我尝试了以下方法但未成功:

list1 = []
for i in range(len(a)):
    if a[i] <= 4:
        list1.append(a[i])
b = []
sub_1 = []
for num, i in enumerate(a):
    sub_1.append(i)
    if num + 1 == len(a):
        b.append(sub_1)
    elif i == 4 and a[num + 1] != 4:
        b.append(sub_1)
        sub_1 = []

您需要遍历每个元素并构建输出列表 -

a = [1,1,2,3,3,3,3,4,4,1,2,2,2,3,3,4,4,4,1,1,2,3,4,4,4]

curr = a[0] 
temp = [] 
b = []

for num in a:
    if num < curr:
        b.append(temp)
        temp = []
    temp.append(num)
    curr = num
b.append(temp)

在构建输出列表时,您需要检查当前元素是否小于前一个元素,如果是,您需要将当前子列表附加到最终列表并开始构建新的子列表。您还需要记住在遍历初始列表中的所有元素后将最后一个子列表添加到最终列表,因为它不会添加到循环中。