Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python按升序对数字列表进行分组?_Python - Fatal编程技术网

如何使用python按升序对数字列表进行分组?

如何使用python按升序对数字列表进行分组?,python,Python,假设我有一个数字列表: 1,2,3,4,7,8,10,12,15,16,17,18,19,20,21,22,24,26,27,29 我想根据列表中的升序创建5个偶数组: 第一组:1,2,3,4,7 第二组:8,10,12,15,16 第三组:17,18,19,20,21 等等 我可以用python来做这件事吗?我知道我可以按0:4分组;5:9... 但是我有很多不同长度的列表,我需要把它们分成5组 您可以尝试以下方法: l = [1, 2, 3, 4, 7, 8, 10, 12, 15, 16,

假设我有一个数字列表:

1,2,3,4,7,8,10,12,15,16,17,18,19,20,21,22,24,26,27,29

我想根据列表中的升序创建5个偶数组:

第一组:1,2,3,4,7

第二组:8,10,12,15,16

第三组:17,18,19,20,21

等等

我可以用python来做这件事吗?我知道我可以按0:4分组;5:9... 但是我有很多不同长度的列表,我需要把它们分成5组

您可以尝试以下方法:

l = [1, 2, 3, 4, 7, 8, 10, 12, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 27, 29]

new_groups = [l[i:i+5] for i in range(0, len(l), 5)]
输出:

[[1, 2, 3, 4, 7], [8, 10, 12, 15, 16], [17, 18, 19, 20, 21], [22, 24, 26, 27, 29]]
[8, 10, 12, 15, 16]
如果要按编号访问每个组,可以构建字典:

accessing = {i+1:a for i, a in zip(range(5), new_groups)}

print(acessing[2])
输出:

[[1, 2, 3, 4, 7], [8, 10, 12, 15, 16], [17, 18, 19, 20, 21], [22, 24, 26, 27, 29]]
[8, 10, 12, 15, 16]

您可以根据列表的长度来执行此操作

l = [...]
groupLength = len(l) // 5
groups = [l[i*groupLength:(i+1)*groupLength] for i in range(5)]
然后用剩余的元素完成最后一组:

groups[-1].extend(l[-len(l)%5:])
或者简单地将剩余的元素放入一个新组:

groups.append(l[-(len(l)%5):])

对您的列表进行排序,然后使用以下来源的
grouper
配方: