it공부 (개념)

0104 파이썬 골프에 유용한 함수 next function, walrus definition

cantor 2023. 1. 4. 21:45

최근 파이썬의 기본기를 익히기위해 프로그래머스 0레벨에서 코드골프를 치고있다.

 

 

코드골프의 개념

 

코드골프란 어떤 기능을 최대한 짧은 코드로 구현하는것을 말한다.

 

 

 

https://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%EA%B3%A8%ED%94%84

 

코드 골프 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 코드 골프(code golf)는 레크리에이션 컴퓨터 프로그래밍 대회의 일종으로, 참여자들은 특정한 알고리즘을 구현하는 가장 짧은 잠재적 소스 코드를 달성하기 위

ko.wikipedia.org

 

 

 

 

나는 글자 수를 줄이기보단 라인을 줄이는 방식으로 놀고있다.

 

 

 

오늘 건진기능은 next method  "next()" 와 walrus operator ":=" 이다.

 

1. walrus operator: 바다사자 연산자

Walrus icons created by Freepik - Flaticon

 


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

 

What’s New In Python 3.8

Editor, Raymond Hettinger,. This article explains the new features in Python 3.8, compared to 3.7. Python 3.8 was released on October 14, 2019. For full details, see the changelog. Summary – Releas...

docs.python.org

Walrus icons created by Freepik - Flaticon

 

543 Free icons of walrus

Download over 543 icons of walrus in SVG, PSD, PNG, EPS format or as web fonts. Flaticon, the largest database of free icons.

www.flaticon.com

바다코끼리 얼굴 이미지 사이트