从 1 开始的正整数按行排列。第 i 行有 i 个数字。例如,这些将是 前四行:
1 | 2, 3 | 4, 5, 6 |7, 8, 9, 10
编写一个函数,接受参数“L”并返回此排列的第 L 行。
这是我的方法:
def find_line(l):
array = []
x = 1
for i in range(1, l + 1):
while len(array) != I:
array.append(x)
x += 1
if i == l:
return array
else:
array = []
最佳答案
您不需要循环。您可以通过以下方式的系列之和直接计算组中的第一个数字:
start = 1 + (n * (n + 1)) // 2
如果您希望 n 从 1
而不是 0
开始,则需要从 n 中减去。
def group(n):
n -= 1
start = 1 + (n * (n + 1)) // 2
return list(range(start, start + n +1))
# try it on first 10 numbers:
for i in range(1, 10):
print(group(i))
这将打印:
[1]
[2, 3]
[4, 5, 6]
[7, 8, 9, 10]
[11, 12, 13, 14, 15]
[16, 17, 18, 19, 20, 21]
[22, 23, 24, 25, 26, 27, 28]
[29, 30, 31, 32, 33, 34, 35, 36]
[37, 38, 39, 40, 41, 42, 43, 44, 45]
如果需要字符串,可以使用 join
或类似方法。
关于python - 线路安排问题。 (有人可以提出一个更省时的解决方案吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63755589/