python - 为何在这种情况下max()函数不能使用?
怪我咯
怪我咯 2017-04-18 09:22:28
0
2
1051
class LongestIncreasingSubsequence:
    def getLIS(self, A, n):
        # write code here
        dp=[0 for i in range(n)]
        dp[0]=1
        max=0
        print dp
        for i in range(n):
            now=0
            if i!=0:
                res=1
                for j in range(i):
                    if A[i]>A[j]:
                        res=dp[j]
                        now=now +1
                if now>=max:
                    max=now
                    dp[i]=res+1
                else:
                    dp[i]=res
        print dp
        #return max(dp)

kk=LongestIncreasingSubsequence()
kk.getLIS([1,4,2,5,3],5)

其中dp 是一个以int类型为成员的list
而使用max()函数时却会报错
TypeError: 'int' object is not callable
是由什么原因导致的?

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(2)
PHPzhong

5 行目で max 関数に値 0 が割り当てられ、ライブラリ関数

と同じ名前にならないように変数の名前を変更します。
いいねを押す +0
伊谢尔伦

その理由は、@rayleisure が言ったように、ここでは max を型 int の変数への参照として使用し、結果として

が返されるためです。 リーリー

は、組み込み関数が失敗するだけでなく、次の原因も引き起こします。

リーリー

これは、整数 max

を呼び出したためです。

つまり、変数に次のような名前を付けないでください。

  1. キーワード

  2. 組み込み関数

  3. 使用中の標準ライブラリまたはパッケージ/モジュールの名前

同じ名前です。

余談

以下は本題とは関係ありません

  1. 現在のコードから判断すると、このクラスを作成する必要があるのは関数のみであるようです (オンライン質問バンクを実行している場合を除きますか?)

  2. リストの長さを具体的に渡す必要はありません。Python でリストの長さについて尋ねるには、len()

  3. を使用します。
  4. LIS の問題については、コードを簡略化しました:

LIS の長さのみを検索します:

リーリー

LIS 全体がそれを公表することを要求しています:

リーリー

テスト:

リーリー

結果:

リーリー

私が回答した質問: Python-QA

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!