TypeError:只能将列表(不是“int”)连接到python中的列表

时间:2013-07-19 20:46:54

标签: python

我尝试运行此代码,但显示错误:

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维数组,但它显示错误。

3 个答案:

答案 0 :(得分:9)

s[j] = max(b)

不会将b视为2-d整数数组并选择最大的整数。 b是列表清单。 max(b)比较列表并返回比较最高的列表。 (列表比较是通过比较元素lexicographically完成的。)

你想要

s[j] = max(max(sublist) for sublist in b)

答案 1 :(得分:1)

尝试:

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])

答案 2 :(得分:1)

我使用以下python代码得到了同样的错误:

 retList = []
    for anItem in aList:
        if anItem % 2 == 0:
            retList = retList + anItem
    return retList

当我改变&#34; +&#34;我用它来连接附加声明:

 retList = []
    for anItem in aList:
        if anItem % 2 == 0:
            retList.append(anItem) 
    return retList

它运作良好。