假设我们有一个列表 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] 我想对该列表中的元素进行分组,以便:
(1, 5, 9)
(2, 6, 10)
(3, 7, 11)
(4, 8, 12)
等等。 (考虑到列表的长度总是3的倍数)
尝试了以下方法,但当然这只是将元素连续分组:
>>>for x, y, z in itertools.zip_longest(*[iter(lista)] * 3):
print(x,y,z)
>>>(1 2 3)
(4 5 6)
(7 8 9)
(10 11 12)
期望的输出: (1, 5, 9) (2, 6, 10) (3, 7, 11) (4, 8, 12)
更新问题 让我将问题“升级”为我的具体方法: 所以,我有一个包含 900 个 numpy 数组的列表,我想将这些数组分组到长度为 3 的子列表中。因此,将有一个包含 300 个子列表的最终列表,其中每个子列表包含 3 个数组。 这些数组应按上述方式分组。 如果我们有 900 个数字的列表,所需的输出应该是: (1, 5, 9) (2, 6, 10) (3, 7, 11) (4, 8, 12) (13, 17, 21) (14, 18, 22) (15, 19, 23) (16, 20, 24) (25, 29, 33) (26, 30, 34) (27, 31, 35) (28, 32, 36)...
请您参考如下方法:
您可以使用列表理解,切片次数等于列表大小除以步长:
step = 4
[l[i::step] for i in range(len(l)//(step-1))]
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
