3 回答
TA贡献1805条经验 获得超9个赞
这不是同一个顺序。由于 的结果,它被偶数/奇数位置分割index % batch_count
。
如果 abatch_count
为 2,则有index % 2
,它将在0
和 之间交替1
:
>>> [i % 2 for i in range(10)] [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
最终结果是在第一个子集合中保留偶数位置,在第二个子集合中保留赔率。
TA贡献2080条经验 获得超4个赞
您可以使用该grouper函数将列表拆分为大小为 的列表的列表n。
from itertools import zip_longest
def grouper(n, iterable):
args = [iter(iterable)] * n
return ([e for e in t if e != None] for t in zip_longest(*args))
b = [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f'), (7, 'g')]
batches = list(grouper(3, b))
print(batches)
输出:
[[(1, 'a'), (2, 'b'), (3, 'c')], [(4, 'd'), (5, 'e'), (6, 'f')], [(7, 'g')]]
TA贡献1842条经验 获得超12个赞
输出正常。您可以完全不排序地尝试一下,看看有什么不同。
batch_count = len(b) // 3
batches = [[] for _ in range(batch_count)]
for index, vec in enumerate(b):
batches[index % batch_count].append(vec)
根据您的情况从原始列表创建两个子列表,即偶数和奇数。每一个都已排序。
添加回答
举报