Python은 대부분의 경쟁 프로그래밍 문제에 대해 코더가 선호하는 언어 중 하나입니다. 대부분의 문제는 python을 사용하여 합리적인 시간 내에 쉽게 계산됩니다.
복잡한 문제 중 일부의 경우, 충분히 빠른 파이썬 코드를 작성하는 것이 종종 어려운 일입니다. 다음은 경쟁 코딩에서 코드의 성능을 개선하는 데 도움이 되는 몇 가지 파이썬 코드 구성입니다. −
1. 문자열 연결 :아래 구문을 사용하지 마십시오.
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] for x in some_list: str1 += x print(str1)
위의 방법은 엄청난 시간 오버헤드를 제공합니다. 대신 이 방법을 사용하십시오(join 방법) -
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] print(str1.join(some_list))
2. 지도 기능
일반적으로 경쟁 코딩에는 다음과 같은 입력이 있습니다.
1234567
단순히 숫자 목록으로 가져오려면
list(map (int, input().split()))
입력의 종류에 관계없이 항상 input() 함수를 사용하고 map 함수를 사용하여 변환하십시오.
>>> list(map(int, input("enter numbers:").split())) enter numbers:1 2 3 4 5 6 7 [1, 2, 3, 4, 5, 6, 7] >>>
지도 기능은 여러 번 편리하게 사용할 수 있는 아름다운 파이썬 내장 기능 중 하나입니다. 알 가치가 있습니다.
3. 컬렉션 모듈
목록에서 중복을 제거하려는 경우. Java와 같은 다른 언어에서는 HashMap 또는 다른 이상한 방법을 사용해야 할 수도 있지만 pytho에서는 간단합니다.
>>> print(list(set([1,2,3,4,3,4,5,6]))) [1, 2, 3, 4, 5, 6]
또한 두 개 이상의 목록을 병합하는 동안 목록에서 확장() 및 추가()를 사용하는 데 주의하십시오.
>>> a = [1, 2, 3,4] # list 1 >>> b = [5, 6, 7] # list 2 >>> a.extend(b)#gives one list >>> a [1, 2, 3, 4, 5, 6, 7] >>> a.append(b) # gives list of list >>> a [1, 2, 3, 4, [5, 6, 7]]
4. 언어 구성
절차 코드는 Python에서 지원되지만 함수 내에서 코드를 작성하는 것이 좋습니다.
def main(): for i in range(2**3): print(x) main()
보다 훨씬 낫습니다.
for x in range(2**3): print(x)
기본 Cpython 구현으로 인해 전역 변수보다 지역 변수를 저장하는 것이 더 빠릅니다.
5. 표준 라이브러리 사용:
가급적 내장 함수와 표준 라이브러리 패키지를 사용하는 것이 좋습니다. 거기, 대신 -
newlist = [] for x in somelist: newlist.append(myfunc(x))
이것을 사용하십시오 -
newlist = map(myfunc, somelist)
마찬가지로 itertools(표준 라이브러리)는 일반적인 작업에 대해 훨씬 빠르기 때문에 사용하십시오. 예를 들어, 몇 줄의 코드로 루프에 대한 순열과 같은 것을 가질 수 있습니다.
>>> import itertools >>> iter = itertools.permutations(["a","b","c"]) >>> list(iter) [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
6. 생성기
생성기는 작성한 코드의 메모리 공간과 평균 시간 복잡성을 모두 줄이는 훌륭한 구성입니다.
def fib(): a, b = 0, 1 while 1: yield a a, b = b, a+b