【发布时间】:2016-10-21 00:49:32
【问题描述】:
假设我有一个清单,
A = range(1, 6) = [1, 2, 3, 4, 5]
B,最终结果是一个列表列表。给定i 和j,您将如何列出索引i 界定一侧和j 另一侧的迭代和?
B[j] = sum(A[j:i+1] or A[i:j+1]) 取决于 j 或 i 是否更大。
索引 0 和 2 的示例:
B[0] = [1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5]
= [1, 3, 6, 10, 15]
B[2] = [1+2+3, 2+3, 3, 3+4, 3+4+5]
= [6, 5, 3, 7, 12]
======
当前代码(有效)是两个for 循环,非常暴力。我觉得应该有办法使用reduce?
A = range(1,6)
n = len(A)
B = []
for j in xrange(n):
b = []
for i in xrange(n):
if j <= i:
b.append(sum(A[j:i+1]))
else:
b.append(sum(A[i:j+1]))
B.append(b)
# print
for b in B:
print b
次要背景:可能是我对 euler 82 项目的解决方案的一部分
【问题讨论】: