使用模数分块数据的优雅方式?
Elegant way to chunk data using modulo?
假设我有 3 个 ID:
ids = ["x1", "y1", "z1"]
我有一个相应的 for-loop
,它生成另一组 ID 以关联到每个 ID。我希望 1,000,000
自动生成的 ID 分别关联到 x1、y1 和 z1。假设下面代码片段中的每个注释都负责生成一个 UUID 并插入到一个值为列表的映射中,等等。这些细节并不重要。
示例:
for x in range(0, 3000000):
if (x < 1000000):
# associate this auto-generated ID to x1
if (x >= 1000000 and x < 2000000):
# associate this auto-generated ID to y1
if (x >= 2000000 and x < 3000000):
# associate this auto-generated ID to z1
我试图想出一种干净的方法来使用简单的模运算来执行此操作,但不太记得在这种情况下我应该做什么。
如果你有一个在相同索引处具有相应 ID 的列表列表(与第一个位置的 x1 相关联的 ID,第二个位置的 y1 ...),你可以这样做:
IDS = [[], [], []]
for x in range(0,3000000):
IDS[x//1000000].append(x)
您所做的与模运算无关,因为您是将所有这些组合在一起,而不是在 ID 之间轮换。
for x in range(0, 1000000):
# associate `x` with `x1`
for x in range(1000001, 2000000):
# associate `x` with `y1`
for x in range(2000001, 3000000):
# associate x with `z1`
假设我有 3 个 ID:
ids = ["x1", "y1", "z1"]
我有一个相应的 for-loop
,它生成另一组 ID 以关联到每个 ID。我希望 1,000,000
自动生成的 ID 分别关联到 x1、y1 和 z1。假设下面代码片段中的每个注释都负责生成一个 UUID 并插入到一个值为列表的映射中,等等。这些细节并不重要。
示例:
for x in range(0, 3000000):
if (x < 1000000):
# associate this auto-generated ID to x1
if (x >= 1000000 and x < 2000000):
# associate this auto-generated ID to y1
if (x >= 2000000 and x < 3000000):
# associate this auto-generated ID to z1
我试图想出一种干净的方法来使用简单的模运算来执行此操作,但不太记得在这种情况下我应该做什么。
如果你有一个在相同索引处具有相应 ID 的列表列表(与第一个位置的 x1 相关联的 ID,第二个位置的 y1 ...),你可以这样做:
IDS = [[], [], []]
for x in range(0,3000000):
IDS[x//1000000].append(x)
您所做的与模运算无关,因为您是将所有这些组合在一起,而不是在 ID 之间轮换。
for x in range(0, 1000000):
# associate `x` with `x1`
for x in range(1000001, 2000000):
# associate `x` with `y1`
for x in range(2000001, 3000000):
# associate x with `z1`