我试图运行此代码,但它显示错误:
def shoot(aliens):
s=[0]*1000
s[0]=0
s[1]=1
num=len(aliens)
b=[[0 for m in range(1000)] for n in range(1000)]
for j in xrange(2,num):
for i in xrange(0,j):
b[j][i]=s[i]+min(int(aliens[j]),f[j-i]) ##Error here
s[j]=max(b)
和错误:
Traceback (most recent call last):
File "module1.py", line 67, in <module>
print shoot(line)
File "module1.py", line 26, in shoot
b[j][i]=s[i]+min(int(aliens[j]),f[j-i])
TypeError: can only concatenate list (not "int") to list
请帮忙!
编辑:添加更多代码。 s,外星人和f是其他阵列。我试图将结果保存到2维数组,但它显示错误。
s[j] = max(b)
不会将b
视为2-d整数数组并选择最大的整数。 b
是一份清单。 max(b)
比较列表并返回比较最高的列表。 (通过比较元素lexicographically完成列表比较。)
你要
s[j] = max(max(sublist) for sublist in b)
我用以下python代码得到了同样的错误:
retList = []
for anItem in aList:
if anItem % 2 == 0:
retList = retList + anItem
return retList
当我将用于连接的“+”更改为append语句时:
retList = []
for anItem in aList:
if anItem % 2 == 0:
retList.append(anItem)
return retList
它工作得很好。
尝试:
b=[[0 for m in range(1000)] for n in range(1000)]
for j in xrange(2,num):
for i in xrange(0,j):
b[j][i] = s[j][i] + min(int(aliens[j]),f[j-i])
在我看来,喜欢的是2D列表(列表列表),因此,您无法执行操作。
s[j] + min(int(aliens[j]),f[j-i])