알면 좋은 파이썬 스타일 코드들

2023. 1. 15. 15:00·Python/개념 및 정리
반응형

이번 글에는 파이썬 알고리즘이나 개념이 아닌 알면 좋은 코드들에 대해 말하겠습니다.

 

1. split & join

2. list comprehension

3. enumerate & zip

4. lambda & map & reduce

5. asterisk (가변인자)

 

1. spilt & join

split은 string type값을 "기준값"으로 나눠서 List 형태로 변환하는 코드입니다.

1
2
3
string = 'a b c d e'
string_list = string.split(' ')
print(string_list)
cs

이렇게 공백 또는 string_list = string.split(',') 등의 코드로 기준 값으로 문자열을 리스트 형태로 변환합니다.

 

join함수는 string으로 구성된 리스트를 합쳐서 하나의 string으로 만드는 역할을 합니다.

split함수의 역기능으로 생각하시면 편합니다.

1
2
string = '-'.join(string_list)
print(string)
cs

이렇게 되면 문자들이 -을 사이로 하나의 string으로 결합이 됩니다.

 

2. list comprehension

간단히 설명하면 기존 우리가 for append를 이용해서 리스트 만드는 것을 단축시킬 수 있는 간단 for문입니다.

 

1
2
3
4
5
6
result_list = []
for i in range(10):
    result_list.append(i)
 
fast_result = [i for i in range(10)]
print(result_list,fast_result)
cs

위의 for반복문은 우리가 리스트를 만들때 보통 사용하는 방법입니다.

하지만 시간 단축을 위해 밑의 방법을 사용하는걸 추천합니다. 결과값은 동일합니다.

1
2
3
4
case_1 = ["a","b","c"]
case_2 = ["d","e","a"]
result_list = [i + j for i in case_1 for j in case_2 if not i == j]
print(result_list)
Colored by Color Scripter
cs

이렇게 if문과 함께 사용하는것도 가능합니다.

 

3. enumerate & zip

enumerate는 list의 원소를 추출할 때 번호를 붙여서 추출하는 코드입니다.

1
2
3
list_a = ["a","b","c","d","e"]
list_b = list(enumerate(list_a))
print(list_b)
cs

이렇게 볼수 있듯이 리스트의 원소들에 번호를 붙여서 추출이 됩니다.

 

zip은 두 개의 list의 값을 병렬적으로 추출하는 코드입니다.

1
2
3
4
5
alist = ['a1','a2','a3']
blist = ['b1','b2','b3']
 
a,b,c = zip(alist,blist)
print(a,b,c)
cs

이렇게 볼수 있듯이 alist의 첫 번째 원소와 blist의 첫 번째 원소가 하나의 튜플로 합쳐진 모습으로 볼 수 있습니다.

 

4. lambda & map % reduce

lambda함수는 함수 이름 없이 함수처럼 사용할 수 있는 익명함수입니다.

1
print((lambda x: x + 2)(5))
cs

이와 같이 함수를 사용해서 처리해야 하는 코드를 한 줄로 처리할 수 있습니다.

 

map함수는 두 개이상의 리스트에도 적용 가능합니다. IF 필터도 사용 가능합니다.

1
2
3
a = [1, 2, 3, 4, 5]
b = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x * y, a, b)))
cs

이렇게 map함수를 이용하면 두 개의 리스트를 이용할 수 있다.

 

reduce함수는 리스트에 저장된 요소를 순서대로 더한 다음 누적된 결과를 반환합니다.

1
2
from functools import reduce
print(reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]))
cs

reduce함수는 functools에서 reduce를 가져와야 한다.

출력값은 1,2,3,4,5를 다 더한 15이다.

 

5. asterisk

*을 보면 C언어의 포인터가 생각난다. 그래서 별로 좋은 기억이 있다..

하지만 파이썬의 *(asterisk)기호는 사용하면 편리한 기능이다.

tuple, dict 등 자료형에 들어가 있는 값을 unpacking 하는 기능이다.

1
2
3
4
def asterisk_test_2(*args):
    x, y, z = args
    return x, y, z
print(asterisk_test_2(3, 4, 5))
cs

위의 코드는 *기호가 없다면 런타임 에러가 생기는 코드다.

asterisk_test_2 함수의 매개변수는 하나인데 함수의 인자가 3개이기 때문이다. 그래서 실제로 *을 제거한 뒤 실행시키면

이렇게 1개의 인자만 받을 수 있는데 3개가 주어졌다고 나온다.

하지만 * 기호를 사용하면 3개의 인자를 한 번에 받을 수 있다.

인자를 튜플 타입으로 받은 모습을 확인할 수 있다.

 

1
2
3
def asterisk_test(a, b, *args):
    return a+b+sum(args)
print(asterisk_test(1, 2, 3, 4, 5))
cs

a와 b를 받은 뒤 남은 인자들을 튜플 형태로 받은 모습이다.

 

*기호를 두 번 사용하면 딕셔너리 타입의 값들을 받을 수 있다.

1
2
3
4
def asterisk_test(**data):
    print(data)
data = {"b":1 , "c":2, "d":3}
asterisk_test(**data)   
cs

반응형
'Python/개념 및 정리' 카테고리의 다른 글
  • 알아두면 좋은 에라토스테네스의 체(파이썬,Python3) & 백준(S2) 4948번: 베르트랑 공준
  • 파이썬 마스터 하기 8. collections 모듈
  • 파이썬 마스터 하기 7. 넘파이(numpy)
  • [알고리즘] 위상정렬(topological sorting) 파이썬으로 마스터 하기
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (218)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (8)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
알면 좋은 파이썬 스타일 코드들
상단으로

티스토리툴바