在python中一致地将两个列表分成块

Posted

技术标签:

【中文标题】在python中一致地将两个列表分成块【英文标题】:splitting two lists in chunks in unison in python 【发布时间】:2022-01-21 13:12:29 【问题描述】:

我必须有两个相同长度的列表 X 和 Y。我想将两个列表统一拆分为长度为 2000 的块。列表 X 和 Y 的长度分别为 3671460。例如:

#input
X = [1,2,3,4,5]
Y = [0,1,0,1,1]

#Expected output
X = [[1,2],[3,4],[5]]
Y = [[0,1],[0,1],[1]]

这个例子当然显示了一个小得多的列表。但我的真实清单是 3671460 长。如何将 X 和 Y 分成块,每个块有 2000 个示例?这些块稍后将输入到我的深度学习模型中。我们将不胜感激。

【问题讨论】:

【参考方案1】:

这个呢?

a = [1, 2, 3, 4, 5]
b = [a[x:x+2] for x in range(0, len(a), 2)]

在您的情况下,2 可能是 2000。

【讨论】:

【参考方案2】:

如果您的列表长度不同,或者不能整除,您可能需要使用zip_longest 来“填充”空值。这里的代码将每个列表中的块配对:

from itertools import zip_longest

#input
X = [1,2,3,4,5,6,7,8]
Y = [0,1,0,1,0]

# Number of items in each 'chunk'
count = 3

print(
    list(
        zip_longest(
            zip_longest(*[iter(X)] * count),
            zip_longest(*[iter(Y)] * count)
        )
    )
)
# ((1, 2, 3), (0, 1, 0)), ((4, 5, 6), (1, 0, None)), ((7, 8, None), None)]

您可以通过传递参数fillvalue='x' 来替换输出中的None

【讨论】:

以上是关于在python中一致地将两个列表分成块的主要内容,如果未能解决你的问题,请参考以下文章

给定一个数组,如果你可以递归地将它分成两个相等的组,则返回 true

python 学习笔记 -- 数据结构与算法 归并排序 Merge Sort

如何将一个巨大的列表分成相等的块并将条件应用于这些块?

python 判断两个列表中相同和不同的元素

在matlab中可视化地将数据分成两类

把1到100的数字拆分成字典中的两个键值对 python