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,这正是我长期以来一直在努力解决的问题。