개발일기 [Python 파이썬]

파이썬 꿀팁: 긴 코드 한줄로 줄여쓰기

neullo 2024. 2. 20. 08:43

파이썬을 이용하면 한 줄로 간단히 줄여 쓸 수 있다는 장점이 있다. 예를 들어, 3이라는 숫자가 홀수인지 짝수인지 알고 싶다.

먼저 (1) 숫자(num)는 3이야 라고 알려주고, (2) 규칙을 알려준다: 조건(if)에 따라 홀수와 짝수 같은 다른 값을 변수(result)에 저장하고 싶으니, 2로 나누어서 0 (num % 2 == 0)이 나오면 짝수이고 아니면 (else) 홀수라는 규칙이다.
(3) 완전한 문장을 출력하기 위해 f를 넣어 print(f'{something}입니다')한다.

if문 - 삼항연산자로 짝수인지 홀수 인지 구분하기 

num = 3
result = ('짝수' if num % 2 == 0 else '홀수')
print(f'{num}은 {result}입니다.')

 

즉, 3이라는 숫자가 if 만약 2로 나누어서 % ==0 이면 짝수고 아니면 else 홀수 라고 출력해줘- 라고 규칙을 result에 만들고 홀수, 짝수 이런식으로 말고, '{3}번은 {홀수/짝수}입니다' 이런식으로 print 해서 알려줘 라는 뜻이다.

다른 예시로, 나에게 (1) 5000원이 있다. (2) result 규칙을 알려준다: 만약(if) 택시비가 5000원보다 낮으면 택시를 타고, 아니면(else) 버스를 탄다. 완전한 문장 출력을 위해 f를 넣어 (3) print(f'{name}은 {택시/버스}를 타야합니다') 라고 출력할 수 있다.



**왜 마지막 프린트에서 f를 넣는지는 다른 'f-string '포스트에서 찾아볼 수 있다 간단히 f를 마지막 원하는 결과값 앞에 넣는 것 만으로 '희수, 23점' 이 아닌  '희수은 23점입니다' 와 같이 완성된 문장을 출력(print) 하고 싶을때 사용한다.


 

num = 3
result = ('짝수' if num % 2 == 0 else '홀수')
print(f"{num}은 {result}입니다.")

 

라고 출력을 요청하면 아래와 같이 '3은 홀수입니다'가 나온다.

('3은 홀수 입니다')​

 

이것을 한 줄에 적는 것이 파이썬의 삼항연산자인 조건식.

 

Recap:

원래는 (아래와 같이) 길게 써야 했으나, 가운데 과정을 다 지우고 간단히 result = ('짝수' if num % 2 == 0 else '홀수')로 나타낼 수 있다.

num =3

if num % 2 == 0
    result ='짝수')
else:
    result ='홀수'
   	
	result = ('짝수' if num % 2 == 0 else '홀수')
    	print(f'{num}은 {result} 입니다')

 

참고로 result = ('짝수' if num % 2 == 0 else '홀수')에서 (괄호)는 지워도 된다. 하지만 없으면 헷갈리니 쓰는 걸 추천!

 

 


for문 - 기존값에 2를 곱한 숫자들로 새로운 리스트 요청하기

for는 반복적으로 복주머니에 들어있는 공을 순서대로 꺼내 요청한 규칙에 의해 출력된 값을 보여 주는 것이라고 했다. 예를 들어, a_list에 [1, 3, 2, 5, 1, 2] 같은 값들이 있다고 할 때, 비어있는 b_list에 [2, 6, 4, 10, 2, 4] 같이 2배의 값으로 출력되도록 요청하고 싶다면. 어떻게 하면 될까? 

간단히, 각 숫자 a에 2를 곱하면(a*2)된다. a_list에 있는 숫자 [1]을 2배한 값, [3]을 2배 한 값, [5]를 두배한 값을 출력해 오면 되니, 먼저 list를 쓸 때 사용하는 [] 괄호를 사용하고, 원하는 b_list의 공식을 다음과 같이 만들어주자.


a_list에는 이런 숫자가 있어 [1, 3, 2, 5, 1, 2] b_list는 비어있어.
  
b_list= [a*2 for a in a_list] 이라는 규칙에 따라 처리한 b_list내용 알려줘- print(b_list)를 출력하면 [2, 6, 4, 10, 2, 4] 가 나온다.

a_list  = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]

print(b_list)

 

원래대로라면 이렇게 길었던 문장을 짧게 바꾸는 파이썬의 꿀팁

a_list  = [1, 3, 2, 5, 1, 2]
b_list = []

for a in a_list:
    b_list.append(a*2)

print(b_list)