我有一个长度不一的清单。我想按列表的不同长度对列表进行排序。
我有一个代码,可以生成@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]]