11

このコードを実行しようとしましたが、エラーが表示されました:

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次元配列に保存しようとしましたが、そのエラーが表示されました。

4

4 に答える 4

10
s[j] = max(b)

b整数の 2 次元配列として扱わず、最大のものを選択します。bリストのリストです。max(b)リストを比較し、最も高いものを返します。(リストの比較は、要素を辞書順に比較することによって行われます。)

あなたがしたい

s[j] = max(max(sublist) for sublist in b)
于 2013-07-19T21:05:25.477 に答える
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])

likes は 2D リスト (リストのリスト) であるように思われるため、操作を実行できません。

s[j] + min(int(aliens[j]),f[j-i])
于 2013-07-19T20:58:02.423 に答える
1

次の python コードで同じエラーが発生しました。

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

連結に使用した「+」を追加ステートメントに変更したとき:

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

それはうまくいきました。

于 2015-02-26T11:22:26.600 に答える
0

埋められたグローバル変数と未使用のローカル変数の競合として、関数でこのエラーが発生しました。誤って、関数では知られていないが、文字列型のグローバル変数として知られている数値ローカル変数に何かを追加しました。

小さくて再現可能な例に切り詰めます。

def test():
    for j in range(2):
        print(j)
        print(i + 1) # error here, string type + 1!!
    return

i = ['a']
test()

出力は次のとおりです。

<ipython-input-281-10d295524223> in test()
      2     for j in range(2):
      3         print(j)
----> 4         print(i + 1)
      5     return
      6 

TypeError: can only concatenate list (not "int") to list

グローバル変数 i は文字列'a'です。文字列に追加することはできません+ 1

もちろん、正しい機能は次のとおりです。

def test():
    for i in range(2):
        print(i + 1)
    return
于 2021-10-02T21:51:48.323 に答える