파이썬 코딩의 기술 정리 #3
- 출판사 Github >> https://github.com/gilbutITbook/080235
- 저자 Github >> https://github.com/bslatkin/effectivepython
1. 시퀀스 슬라이싱(sequence slicing)을 활용합시다.
- slicing이란? 리스트에서 특정 범위를 지정하여 새로운 리스트를 생성하는 것
#기본 사용 방법
a = list[start:end]
#count만큼 건너뛰어 가져오고 싶을 때
b = list[start:end:count]
#list 복사
#list는 mutable이기 때문에, 별도로 복사를 해주어야 합니다.
#리스트 컴프리헨션으로 복사가 가능하고
copy_list = [x for x in list]
#슬라이싱으로도 복사가 가능합니다.
#시작과 끝을 지정해주지 않으면 알아서 모든 원소를 복사합니다.
copy_list = list[:]
슬라이싱은 값을 대입할 때 강점을 보입니다.
지정한 범위와 대입할 값이 차이가 있어도 상관없이 잘 작동합니다.
#변수 대입
list = [1,2,3,4,5,6]
list[1:2]=[9,9,9,9]
# >>> [1, 9, 9, 9, 9, 3, 4, 5, 6]
list = [1,2,3,4,5,6]
list[2:4] = [0]
# >>> [1, 2, 0, 5, 6]
다만, 변수에 대입할 경우, 슬라이싱 대신 언패킹 사용을 권고합니다.
#이것 보다는
a = list[0]
b = list[1]
c = list[2:]
#이렇게 unpacking하는 것을 추천합니다.
#메모리 주소를 활용하여 나머지 원소를 모두 잡아낼 수 있습니다.
#실수를 줄이고, 시각적으로 간단 명료해집니다.
a, b, *c = list
별표 연산자(star operation) 활용 방법과 주의 사항
#마지막 두 원소를 가져올 때
*a, b, c = list
#처음과 마지막 원소를 가져올 때
a, *b, c = list
#마지막 4개 원소를 가져오고 싶은 경우
*others, a, b, c, d = list
# 이러면 오류가 나요
## 1) 적어도 하나의 대입 변수는 있어야 합니다.
*a = list #-> error
## 2) 2개 이상의 별표 연산자는 불가능해요.
*a, *b, c = list #-> error
2. 복잡한 정렬 기준이 있으면, key parameter를 사용합시다.
파이썬의 강력한 정렬 함수인 sort()
기본적으로 '자연스러운 오름차순 정렬'을 지원합니다.
#key에 특정 식을 대입할 수 있습니다.
a = [5,2,6,4,3,88,56,15,42,94,626,56,43,50]
a.sort(key=lambda x:x//10)
# a -> [5, 2, 6, 4, 3, 15, 42, 43, 56, 56, 50, 88, 94, 626]
str_list = ['c', 'a', 'd', 'G', 'S', 'g', 'A', 'C', 'w', 'D']
b.sort(key=lambda x:x.upper()) #모두 대문자로 변경하여 정렬
# b -> ['a', 'A', 'c', 'C', 'd', 'D', 'G', 'g', 'S', 'w']
정렬 조건이 여러개 일 경우
# 조건이 2개 이상인 정렬
list_ = [('a', 100), ('c', 100), ('b', 500), ('d', 50), ('e', 100)]
#두 번째 원소로 먼저 정렬 후, 동일하면 첫 번째 원소로 정렬
list_.sort(key=lambda x:(x[1], x[0]))
# list_ -> [('d', 50), ('a', 100), ('c', 100), ('e', 100), ('b', 500)]
반응형
'Python tech > 고급 파이썬 공부' 카테고리의 다른 글
Python 이해하기 쉬운 코드 이름 짓기 (0) | 2023.02.26 |
---|---|
가독성 좋은 파이썬 코드 작성방법 (5) | 2023.02.19 |
올바른 코딩 질문하는 방법 (0) | 2023.02.18 |
[파이썬 스킬업 #2] unpacking, enumerate, zip 활용하자 (1) | 2022.01.26 |
[파이썬 스킬업 #1] PEP8 스타일 가이드 핵심 정리 (1) | 2022.01.17 |