최근 파이썬의 기본기를 익히기위해 프로그래머스 0레벨에서 코드골프를 치고있다.
코드골프의 개념
코드골프란 어떤 기능을 최대한 짧은 코드로 구현하는것을 말한다.
https://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%EA%B3%A8%ED%94%84
나는 글자 수를 줄이기보단 라인을 줄이는 방식으로 놀고있다.
오늘 건진기능은 next method "next()" 와 walrus operator ":=" 이다.
1. walrus operator: 바다사자 연산자
walurs의 뜻은 바다 코끼리이다.
연산자의 모양 := 이 바다코끼리 얼굴과 닮아서 지어진 이름이라고 한다
a:= value
a라는 변수를 선언해서 value를 저장하는 역할을 한다.
일반적인 선언과 별 차이가없어보이지만, 사실 이 연산자는 loop 조건식내부에서도 변수를 선언할수 있다는점이다.
어떤 리스트에 인덱스 번호가 제일 낮은 5의 배수를 answer라는 변수에 저장하는 코드를 짜보자.
for item in new_list:
new_list = [3, 7, 16 ,31, 25, 15, 40]
if item % 5 == 0:
answer = item
break
print(answer)
결과 : 25
walrus를 사용하는경우 if 문 조건식에서 바로 변수를 선언할 수있다.
for item in new_list:
if (answer := item) % 5 == 0:
break
print(answer)
결과 : 25
조건문안에서 변수를 저장하여 좀더짧은코드를 작성할 수있다.
2. next method
한번 호출할때마다 iterator(반복자)의 다음원소를 내놓는 메서드이다.
for문을 작성하지 않고, iterator의 원소를 차례대로 호출 할 수있다.
new_list = [1, 2, 3, 5, 6, 8, 10
new_iter = iter(new_list)
While true:
print(next(new_iter))
break
출력결과:
1
2
3
5
6
8
10
walrus operator와의혼용
new_list = [1, 2, 3, 5, 6, 8, 10
new_iter = iter(new_list)
while True:
if (h := next(new_iter)) % 5 == 0:
break
print(h)
이렇게 코드를 줄이는 방법을 찾아보는것이 내가모르는 기본 기능을 찾는데 유용한 것같다.
+@ 코드골프 과정
1. 일단 기본 적으로 테스트를 통과하는 코드를 구현한다,
2. 이후 파이썬 기본내장 함수만을 이용하여 그 코드를 줄이는 방법에대해 고민해본다.
-이부분을 한줄만 줄여볼순없을까?
-같은기능을 단 세줄로 구현할 수 없을까?
-단 한줄만으로도 구현할 수있을까?
코드라인 수의 스케일을 조절해가며 구글링을 하다보면 다양한 기능들을 찾을 수 있다.
틀린내용있으면 댓글로 정정해주세요.
모든 내용은 python doc 3.11에서 가져왔습니다.
https://docs.python.org/3/whatsnew/3.8.html
Walrus icons created by Freepik - Flaticon
바다코끼리 얼굴 이미지 사이트
'it공부 (개념)' 카테고리의 다른 글
python내가 버그를 공부 하는 방식 (0) | 2022.12.28 |
---|---|
아주 쉽게 이해하는 환경변수, window에서 환경변수 설정 및 python에서 사용하기 (0) | 2022.12.24 |
python 파이썬 datatime 모듈로 주말을 제외한 주중 날짜만 얻어보기 (0) | 2022.12.20 |
파이썬으로 블랙잭게임 만들기 후기 (0) | 2022.12.07 |
Java println과 print의 차이.feat 별찍기, 유데미 진도율 (0) | 2022.11.27 |