Error: "int" object is not subscriptable in python
Error: "int" object is not subscriptable in python
我正在尝试解决 hackerearth 中的一个问题,但下面的代码给我一个错误:
"int" object is not subscriptable- at line 4 (if(dp[g][p][d] != -1):)
我知道当我们尝试索引一个 int 对象时会发生此错误,但这里的 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=[[-1 for x in range(n)] for x in range(n)]
将 return 一个 two-dimensional 列表,因为您是通过在外部列表中执行 [-1 for x in range(n)]
来创建列表。您可以创建如下所示的 three-dimensional 列表:
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
我正在尝试解决 hackerearth 中的一个问题,但下面的代码给我一个错误:
"int" object is not subscriptable- at line 4 (if(dp[g][p][d] != -1):)
我知道当我们尝试索引一个 int 对象时会发生此错误,但这里的 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=[[-1 for x in range(n)] for x in range(n)]
将 return 一个 two-dimensional 列表,因为您是通过在外部列表中执行 [-1 for x in range(n)]
来创建列表。您可以创建如下所示的 three-dimensional 列表:
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