如何按列表中的元素数对列表列表进行排序

时间:2019-06-22 23:58:25

标签: python python-3.x sorting

我有一个长度不一的清单。我想按列表的不同长度对列表进行排序。

我有一个代码,可以生成@Mike提供的列表列表。虽然我已经阅读了[python:按子列表中的项目对列表列表进行排序]的问题, ](python: sort a list of lists by an item in the sublist)和How to sort (list/tuple) of lists/tuples by the element at a given index?,但没有一个解决我的问题。

def parts(thing):
    result = []
    for i in range(len(thing)):
        for j in range(i + 1, len(thing) + 1):
            if 1 < len(thing[i:j]) < len(thing):
                result.append(thing[i:j])
    return result

# For people who are too lazy to copy-paste code themselves, even after
# all their thinking has been done for them:
res = parts([*range(1,11)])
res

python函数生成如下列表的列表:

 #[[1, 2],
 #[1, 2, 3],
 #[1, 2, 3, 4],
 #[1, 2, 3, 4, 5],
 #[1, 2, 3, 4, 5, 6],
 #[1, 2, 3, 4, 5, 6, 7],
 #[1, 2, 3, 4, 5, 6, 7, 8],
 #[1, 2, 3, 4, 5, 6, 7, 8, 9],
 #[2, 3],
 #[2, 3, 4],
 #[2, 3, 4, 5],
 #[2, 3, 4, 5, 6],
 #[2, 3, 4, 5, 6, 7],
 #[2, 3, 4, 5, 6, 7, 8],
 #[2, 3, 4, 5, 6, 7, 8, 9],
 #[2, 3, 4, 5, 6, 7, 8, 9, 10],
 #[3, 4],
 #[3, 4, 5],
 #[3, 4, 5, 6],
 #[3, 4, 5, 6, 7],
 #[3, 4, 5, 6, 7, 8],
 #[3, 4, 5, 6, 7, 8, 9],
 #[3, 4, 5, 6, 7, 8, 9, 10],
 #[4, 5],
 #[4, 5, 6],
 #[4, 5, 6, 7],
 #[4, 5, 6, 7, 8],
 #[4, 5, 6, 7, 8, 9],
 #[4, 5, 6, 7, 8, 9, 10],
 #[5, 6],
 #[5, 6, 7],
 #[5, 6, 7, 8],
 #[5, 6, 7, 8, 9],
 #[5, 6, 7, 8, 9, 10],
 #[6, 7],
 #[6, 7, 8],
 #[6, 7, 8, 9],
 #[6, 7, 8, 9, 10],
 #[7, 8],
 #[7, 8, 9],
 #[7, 8, 9, 10],
 #[8, 9],
 #[8, 9, 10],
 #[9, 10]]    

sorted(res, key=leh)

我运行了这两个不同的python代码

sorted(res, key=len) # and
res.sort(key=len)

这在下面给了我同样的错误消息:

# TypeError: object of type 'int' has no len()

即使它们起作用,我也会希望放置子列表,每行一个子列表以标记子列表长度的差异。

如果k =列表大小,n = 10 [1,2,3,4,5,6,7,8,9,10],我想将其分类为最小大小到最大大小的范围如下所示。

我想要这样的安排

#[[1, 2], # k = 2
#[2, 3],
#[3, 4],
#[4, 5],
#[5, 6],
#[6, 7],
#[7, 8],
#[8, 9],
#[9, 10],
#[1, 2, 3],    # k=3
#[2, 3, 4],
#[3, 4, 5],
#[4, 5, 6],
#[5, 6, 7],
#[6, 7, 8],
#[7, 8, 9],
#[8, 9, 10],
#[1, 2, 3, 4],    # k=4
#[2, 3, 4, 5],
#[3, 4, 5, 6],
#[4, 5, 6, 7],
#[5, 6, 7, 8],
#[6, 7, 8, 9],
#[7, 8, 9, 10],
#[1, 2, 3, 4, 5],    # k=5
#[2, 3, 4, 5, 6],
#[3, 4, 5, 6, 7],
#[4, 5, 6, 7, 8],
@[5, 6, 7, 8, 9],
#[6, 7, 8, 9, 10],
#[1, 2, 3, 4, 5, 6],    # k=6
#2, 3, 4, 5, 6, 7],
#[3, 4, 5, 6, 7, 8],
#[4, 5, 6, 7, 8, 9],
#[5, 6, 7, 8, 9, 10],
#[1, 2, 3, 4, 5, 6, 7],    # k=7
#[2, 3, 4, 5, 6, 7, 8],
#[3, 4, 5, 6, 7, 8, 9],
#[4, 5, 6, 7, 8, 9, 10],
#[1, 2, 3, 4, 5, 6, 7, 8],    # k=8
#[2, 3, 4, 5, 6, 7, 8, 9],
#[3, 4, 5, 6, 7, 8, 9, 10],
#[1, 2, 3, 4, 5, 6, 7, 8, 9],    # k=9
#[2, 3, 4, 5, 6, 7, 8, 9, 10]]

0 个答案:

没有答案