찾다

 >  Q&A  >  본문

python - 为何在这种情况下max()函数不能使用?

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
是由什么原因导致的?

怪我咯怪我咯2846일 전1085

모든 응답(2)나는 대답할 것이다

  • PHPz

    PHPz2017-04-18 09:24:28

    5번째 줄에서 max 함수에 0 값이 할당되었습니다. max 함수는 라이브러리 함수와 동일한 이름을 갖지 않도록 변수 이름을 바꿉니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:24:28

    이유는 @rayleisure가 말했듯이 여기에서 max 유형의 변수에 대한 참조로 int을 사용하여

    이 되기 때문입니다. 으아악

    내장 기능이 실패할 뿐만 아니라 다음과 같은 원인도 발생합니다.

    으아악

    정수 max,

    를 호출했기 때문입니다.

    간단히 말하면 다음과 같은 변수 이름을 지정하지 마세요.

    1. 키워드

    2. 내장 기능

    3. 사용 중인 표준 라이브러리 또는 패키지/모듈의 이름

    같은 이름이에요.

    여담

    다음은 주제와 관련이 없습니다

    1. 현재 코드로 볼 때 함수만 작성하면 되는 것 같습니다. (온라인 문제은행을 사용하지 않는 한) 이 클래스를 작성하는 것은 중복된 것 같습니다.

    2. 목록의 길이를 전달할 필요가 없습니다. Python에서 목록의 길이를 묻는 것은 len()

    3. 을 사용하여 쉽게 수행할 수 있습니다.
    4. LIS 문제의 경우 코드를 단순화했습니다.

    LIS의 길이만 찾으세요:

    으아악

    LIS 전체가 나오길 요구하고 있습니다:

    으아악

    테스트:

    으아악

    결과:

    으아악

    내가 답변한 질문: Python-QA

    회신하다
    0
  • 취소회신하다