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條經驗 獲得超13個贊
輸出正常。您可以完全不排序地嘗試一下,看看有什么不同。
batch_count = len(b) // 3
batches = [[] for _ in range(batch_count)]
for index, vec in enumerate(b):
batches[index % batch_count].append(vec)
根據您的情況從原始列表創建兩個子列表,即偶數和奇數。每一個都已排序。
添加回答
舉報