这可能很愚蠢。我现在无法理解。
总数(x)
需要与(y)
平分如果x为10,000且y为10,则
这意味着10,000将在10之间吐出。
如何找到起点
1 starts at 1 and ends 1,000
2 starts at 1,001 & ends 2,000
3 ..
4 ..
5 ..
答案 0 :(得分:7)
这只是一些简单的数学:
x = 10000
y = 10
print([(item, item+(x//y-1)) for item in range(1, x, x//y)])
给我们:
[(1, 1000), (1001, 2000), (2001, 3000), (3001, 4000), (4001, 5000), (5001, 6000), (6001, 7000), (7001, 8000), (8001, 9000), (9001, 10000)]
我们在这里使用the range()
builtin和list comprehension。
这可以使用range()
内置来构建从1
到x
以下的生成器,采用x
分割的步骤(整数除法,因此我们不会通过y
得到一个浮点数。
然后我们使用列表推导来获取这些值(1, 1001, 2001, ..., 9001
),然后将它们放入元组对中,将(x//y-1)
(在本例中为999
)添加到值中以获取结束边界。
当然,如果你想在一个循环中使用它,例如,你最好使用一个生成器表达式,以便通过列表理解来懒惰地评估它。 E.g:
>>> for number, (start, end) in enumerate((item, item+(x//y-1)) for item in range(1, x, x//y)):
... print(number, "starts at", start, "and ends at", end)
...
0 starts at 1 and ends at 1000
1 starts at 1001 and ends at 2000
2 starts at 2001 and ends at 3000
3 starts at 3001 and ends at 4000
4 starts at 4001 and ends at 5000
5 starts at 5001 and ends at 6000
6 starts at 6001 and ends at 7000
7 starts at 7001 and ends at 8000
8 starts at 8001 and ends at 9000
9 starts at 9001 and ends at 10000