Python 在遍历数组时未获得预期输出的问题
我有以下代码。我当前接收的输出不是预期的输出。我试图解决的伪代码如下所述Python 在遍历数组时未获得预期输出的问题,python,arrays,python-3.x,list,Python,Arrays,Python 3.x,List,我有以下代码。我当前接收的输出不是预期的输出。我试图解决的伪代码如下所述 for each i in 1 · · · N do TEi = fmob(Li) TCi= fc(Li) TUi =fd(Li) return Python代码 def optimal_partition(): TE=[10,1,3] TC=[2,3,1] TU=[2,3,1] N = l
for each i in 1 · · · N do
TEi = fmob(Li)
TCi= fc(Li)
TUi =fd(Li)
return
Python代码
def optimal_partition():
TE=[10,1,3]
TC=[2,3,1]
TU=[2,3,1]
N = len(TU)-1
SUMS = [0] * N
for j in range(N):
for i in range(1, j + 1):
SUMS[j] += TE[i]
for k in range(j - 1, N + 1):
SUMS[j] += TC[k]
SUMS[j] += TU[j]
return SUMS.index(min(SUMS))
对于上面的代码,我需要预期的输出为[16,15]。谢谢,非常感谢您的帮助。您患有基于
0的索引计算综合症
计算机科学有时使用基于0的索引,而数学似乎使用基于1的索引
此程序似乎为您提供了预期的输出:
def最优分区():
TE=[10,1,3]
TC=[2,3,1]
TU=[2,3,1]
N=len(TU)-1
总和=[0]*N
对于范围(N)内的j:
对于范围(j+1)内的i:
和[j]+=TE[i]
对于范围内的k(j+1,N+1):
和[j]+=TC[k]
和[j]+=TU[j]
回报金额
求和=最佳_划分()
打印(金额)
打印(总和索引(最小值(总和)))
输出:
[16, 15]
1
这是使用列表切片而不是嵌套循环更好地实现算法:
def part_sum(TE, TC, TU, j):
return sum(TE[:j+1]) + sum(TC[j+1:]) + TU[j]
def optimal_partition(TE, TC, TU):
return min(range(len(TE)), key=lambda j: part_sum(TE, TC, TU, j))
TE = [10,1,3]
TC = [2,3,1]
TU = [2,3,1]
print("The sums are: ", [part_sum(TE, TC, TU, j) for j in range(3)])
print("The optimal partition is at:", optimal_partition(TE, TC, TU))
请注意,有3个和,而不是2个,并且j的返回值使用基于零的索引。如果您想返回一个基于一的索引,那么只需将1添加到最佳分区结果。实际输出是什么?我猜是一个错误,所以请包括错误回溯的全文。@quamrana,谢谢,预期的输出是[9,10],没有检索错误,但预期的输出不是我们想要的。我猜如果我复制并运行您提供的代码,我将得到一个错误。如果没有收到错误,则必须运行不同的代码。请用您的实际代码更新问题。嗨@quamrana我已经提供了完整的代码。请查收。感谢按照您的算法,SUMS
应该包含3个值(j=1..3,或者当我们使用基于零的索引时,j=0..2),而不是您当前拥有的2个值。感谢您的精彩帮助@quamrana,这正是我长期以来一直在努力解决的问题。