繁体   English   中英

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

[英]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])

您将需要遍历每个元素并构建 output 列表 -

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)

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

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 = []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM