Skip to main content
 首页 » 编程设计

python之如何迭代列表并加入 Python 中的特定元素

2025年05月04日19xiaohuochai

假设我们有一个列表 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]]