문자열 S가 있다고 가정합니다. S에서 가장 긴 회문 부분 문자열을 찾아야 합니다. 문자열 S의 길이가 1000이라고 가정합니다. 따라서 문자열이 BABAC이면 , 가장 긴 회문 부분 문자열은 BAB입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 문자열의 길이와 같은 차수의 정사각 행렬을 하나 정의하고 False로 채웁니다. 주대각선 요소를 true로 설정하여 0에서 차수 – 1까지 모든 i에 대해 DP[i, i] =True 시작:=0 2에서 S + 1까지의 범위에 있는 l 0에서 S – l + 1까지의 범위에 있는 i
예외에는 문제에 대한 추가 정보를 제공하는 값인 인수가 있을 수 있습니다. 인수의 내용은 예외에 따라 다릅니다. 다음과 같이 예외 절에 변수를 제공하여 예외의 인수를 캡처합니다. - try: You do your operations here; ...................... except ExceptionType, Argument: You can print value of Argument here... 단일 예외를 처리하는 코드를 작성하는 경우 예외 문에
raise 문을 사용하여 여러 가지 방법으로 예외를 발생시킬 수 있습니다. raise 문의 일반 구문은 다음과 같습니다. 구문 raise [Exception [, args [, traceback]]] 여기서 Exception은 예외 유형(예:NameError)이고 인수는 예외 인수에 대한 값입니다. 인수는 선택 사항입니다. 제공되지 않으면 예외 인수는 없음입니다. 마지막 인수인 traceback도 선택 사항이며(실제로 거의 사용되지 않음), 존재하는 경우 예외에 사용되는 traceback 개체입니다. 예시 예외는 문자열, 클래
또한 Python을 사용하면 표준 내장 예외에서 클래스를 파생하여 고유한 예외를 만들 수 있습니다. 다음은 RuntimeError와 관련된 예입니다. 여기에서 RuntimeError에서 서브클래싱된 클래스가 생성됩니다. 예외가 발생했을 때 보다 구체적인 정보를 표시해야 할 때 유용합니다. try 블록에서 사용자 정의 예외가 발생하고 예외 블록에서 catch됩니다. 변수 e는 Networkerror 클래스의 인스턴스를 만드는 데 사용됩니다. . class Networkerror(RuntimeError): d
수업 − 클래스의 개체를 특징짓는 속성 집합을 정의하는 개체에 대한 사용자 정의 프로토타입. 속성은 점 표기법을 통해 액세스되는 데이터 멤버(클래스 변수 및 인스턴스 변수) 및 메서드입니다. 클래스 변수 - 클래스의 모든 인스턴스가 공유하는 변수. 클래스 변수는 클래스 내에서 정의되지만 클래스의 메소드 외부에서 정의됩니다. 클래스 변수는 인스턴스 변수만큼 자주 사용되지 않습니다. 데이터 구성원 − 클래스 및 해당 개체와 관련된 데이터를 보유하는 클래스 변수 또는 인스턴스 변수입니다. 함수 오버로딩 - 특정 기능에 하나 이상의 행동을
클래스 문은 새 클래스 정의를 만듭니다. 클래스 이름은 키워드 class 다음에 다음과 같이 콜론이 옵니다. - class ClassName: 'Optional class documentation string' class_suite 클래스에는 ClassName.__doc__를 통해 액세스할 수 있는 문서 문자열이 있습니다. class_suite는 클래스 멤버, 데이터 속성 및 기능을 정의하는 모든 구성 요소 문으로 구성됩니다. 예 다음은 간단한 Python 클래스의 예입니다. - class Employee: &n
클래스의 인스턴스를 생성하려면 클래스 이름을 사용하여 클래스를 호출하고 __init__ 메서드가 허용하는 모든 인수를 전달합니다. "This would create first object of Employee class" emp1 = Employee("Zara", 2000) "This would create second object of Employee class" emp2 = Employee("Manni", 5000) 객체와 함께 점 연산자를 사용하여 객체의
모든 Python 클래스는 내장 속성을 계속 따르며 다른 속성과 마찬가지로 점 연산자를 사용하여 액세스할 수 있습니다. − __dict__ − 클래스의 네임스페이스를 포함하는 사전. __doc__ − 클래스 문서 문자열 또는 정의되지 않은 경우 없음. __이름__ − 클래스 이름. __모듈__ − 클래스가 정의된 모듈 이름. 이 속성은 대화형 모드에서 __main__입니다. __베이스__ − 기본 클래스 목록에서 나타나는 순서대로 기본 클래스를 포함하는 비어 있을 수 있는 튜플입니다. 예시 위의 클래스에 대해 이러한 모든 속성
Python은 불필요한 객체(내장 유형 또는 클래스 인스턴스)를 자동으로 삭제하여 메모리 공간을 확보합니다. Python이 더 이상 사용하지 않는 메모리 블록을 주기적으로 회수하는 프로세스를 가비지 컬렉션이라고 합니다. Python의 가비지 수집기는 프로그램 실행 중에 실행되며 개체의 참조 횟수가 0에 도달하면 트리거됩니다. 개체의 참조 횟수는 개체를 가리키는 별칭 수가 변경됨에 따라 변경됩니다. 객체의 참조 횟수는 새 이름이 할당되거나 컨테이너(목록, 튜플 또는 사전)에 배치될 때 증가합니다. 개체의 참조 횟수는 del로 삭제
처음부터 시작하는 대신 새 클래스 이름 뒤의 괄호 안에 부모 클래스를 나열하여 기존 클래스에서 파생하여 클래스를 만들 수 있습니다. 자식 클래스는 부모 클래스의 속성을 상속하며 해당 속성을 자식 클래스에 정의된 것처럼 사용할 수 있습니다. 자식 클래스는 부모의 데이터 멤버와 메서드를 재정의할 수도 있습니다. 구문 파생 클래스는 부모 클래스와 매우 유사하게 선언됩니다. 그러나 상속할 기본 클래스 목록은 클래스 이름 뒤에 지정됩니다. - class SubClassName(ParentClass1[, ParentClass2, ...])
항상 부모 클래스 메서드를 재정의할 수 있습니다. 부모의 메서드를 재정의하는 한 가지 이유는 하위 클래스에서 특별하거나 다른 기능을 원할 수 있기 때문입니다. 예시 #!/usr/bin/python class Parent: # define parent class def myMethod(self): print 'Calling parent method' class Child(Parent): # define child class def myM
다음 표에는 자신의 클래스에서 재정의할 수 있는 몇 가지 일반 기능이 나열되어 있습니다. 시니어 번호 방법, 설명 및 샘플 호출 1 __init__ ( 자기 [,args...] ) 생성자(선택적 인수 포함) 샘플 호출 :obj =className(args) 2 __del__( 자기 ) 소멸자, 객체 삭제 샘플 호출 :del obj 3 __repr__( 자기 ) 평가 가능한 문자열 표현 샘플 호출 :repr(obj) 4 __str__(자체) 인쇄 가능한 문자열 표현 샘플 호출 :str(obj)
2차원 벡터를 나타내기 위해 Vector 클래스를 생성했다고 가정하고 더하기 연산자를 사용하여 추가하면 어떻게 됩니까? 파이썬이 당신에게 소리칠 가능성이 높습니다. 그러나 클래스에서 __add__ 메서드를 정의하여 벡터 추가를 수행하면 더하기 연산자가 예상대로 작동합니다 - 예 #!/usr/bin/python class Vector: def __init__(self, a, b): self.a = a self.b = b &
객체의 속성은 클래스 정의 외부에서 표시되거나 표시되지 않을 수 있습니다. 이중 밑줄 접두사로 속성의 이름을 지정해야 하며 이러한 속성은 외부인에게 직접 표시되지 않습니다. 예시 #!/usr/bin/python class JustCounter: __secretCount = 0 def count(self): self.__secretCount += 1 print self.__secretCount counter = J
이 함수는 RE 패턴을 선택적 플래그가 있는 문자열과 일치시키려고 시도합니다. 구문 다음은 이 함수의 구문입니다. - re.match(pattern, string, flags=0) 다음은 매개변수에 대한 설명입니다. - 시니어 번호 매개변수 및 설명 1 패턴 이것은 일치시킬 정규식입니다. 2 문자열 이것은 문자열의 시작 부분에 있는 패턴과 일치하도록 검색되는 문자열입니다. 3 플래그 비트 OR(|)를 사용하여 다른 플래그를 지정할 수 있습니다. 아래 표에 나열된 수정자입니다. re.match 함수는
이 함수는 선택적 플래그를 사용하여 문자열 내에서 RE 패턴의 첫 번째 발생을 검색합니다. 구문 다음은 이 함수의 구문입니다. - re.search(pattern, string, flags=0) 다음은 매개변수에 대한 설명입니다. - 시니어 번호 매개변수 및 설명 1 패턴 이것은 일치시킬 정규식입니다. 2 문자열 이것은 문자열의 시작 부분에 있는 패턴과 일치하도록 검색되는 문자열입니다. 3 플래그 비트 OR(|)를 사용하여 다른 플래그를 지정할 수 있습니다. 아래 표에 나열된 수정자입니다. re.s
Python은 정규식을 기반으로 하는 두 가지 기본 작업인 일치를 제공합니다. 검색하는 동안 문자열의 시작 부분에서만 일치하는지 확인합니다. 문자열의 어디에서나 일치하는지 확인합니다(Perl이 기본적으로 수행하는 작업입니다). 예 #!/usr/bin/python import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print "mat
정규식을 사용하는 가장 중요한 re 메소드 중 하나는 sub . 구문 re.sub(pattern, repl, string, max=0) 이 방법은 문자열의 모든 RE 패턴을 repl으로 바꿉니다. , max가 아닌 경우 모든 항목 대체 제공. 이 메서드는 수정된 문자열을 반환합니다. 예 #!/usr/bin/python import re phone = "2004-959-559 # This is Phone Number" # Delete Python-style comments num = re.sub(r'#.*$
정규식 리터럴은 일치의 다양한 측면을 제어하기 위해 선택적 수정자를 포함할 수 있습니다. 수정자는 선택적 플래그로 지정됩니다. 이전에 표시된 대로 배타적 OR(|)를 사용하여 여러 수정자를 제공할 수 있으며 다음 중 하나로 표시될 수 있습니다. - 시니어 번호 수정자 및 설명 1 재.나 대소문자를 구분하지 않는 일치를 수행합니다. 2 재.L 현재 로케일에 따라 단어를 해석합니다. 이 해석은 알파벳 그룹(\w 및 \W)과 단어 경계 동작(\b 및 \B)에 영향을 줍니다. 3 re.M $가 행의 끝(문자열의 끝이 아
제어 문자(+ ? . * ^ $ ( ) [ ] { } | \)를 제외하고 모든 문자는 자신과 일치합니다. 제어 문자 앞에 백슬래시를 붙여 이스케이프할 수 있습니다. 다음 표는 Python에서 사용할 수 있는 정규식 구문을 나열합니다. − 시니어 번호 패턴 및 설명 1 ^ 줄의 시작과 일치합니다. 2 $ 줄의 끝과 일치합니다. 3 . 개행을 제외한 모든 단일 문자와 일치합니다. m 옵션을 사용하면 줄 바꿈과도 일치합니다. 4 [...] 대괄호 안의 모든 단일 문자와 일치합니다. 5 [^...] 대괄