【问题标题】:Error: "int" object is not subscriptable in python错误:“int”对象在 python 中不可下标
【发布时间】:2020-12-10 02:26:38
【问题描述】:

我正在尝试解决hackerearth中的一个问题,下面的代码给了我一个错误:

"int" object is not subscriptable- at line 4 (if(dp[g][p][d] != -1):)

我知道当我们尝试索引 int obj 时会发生此错误,但这里 dp 是一个 3d 列表。

def max_val(i,g,p,d):
    if(i==n or g==maxG or p==maxP or d==maxD):
        return 0;
    if(dp[g][p][d] != -1):
        return dp[g][p][d]
    
    val=dp[g][p][d]
    if(g<maxG):
        val=max(val,gold[i]+max_val(i+1,g+1,p,d))
    if(p<maxP):
        val=max(val,plat[i]+max_val(i+1,g,p+1,d))
    if(d<maxD):
        val=max(val,dia[i]+max_val(i+1,g,p,d+1))

    return val;

n=int(input())

maxG,maxP,maxD=[int(x) for x in input().split()]

total=0

gold=[]
plat=[]
dia=[]
dp=[[-1 for x in range(n)] for x in range(n)]

for _ in range(n):
    x=[int(i) for i in input().split()]
    gold.append(x[0])
    plat.append(x[1])
    dia.append(x[2])

max_val(0,0,0,0)

【问题讨论】:

  • 你确定dp是一个三维列表吗?当我尝试它时,它看起来像是 x x x 元素的二维列表。
  • @WanderNauta,是的,我刚刚意识到这一点。我认为将 n 设为 3 会神奇地将其变为 3D,但它只会给出大小为 3x3 的 2D。

标签: python object multidimensional-array int subscript


【解决方案1】:

dp=[[-1 for x in range(n)] for x in range(n)] 将返回一个二维列表,因为您通过在外部列表中执行 [-1 for x in range(n)] 来创建列表。您可以创建一个如下所示的三维列表:

dp=[[[-1 for x in range(2)] for x in range(2)] for x in range(2)]
print(dp) # outputs [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]
print(dp[0][0][0]) # outputs -1

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 2012-01-03
    • 2017-04-15
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多