파이썬 코딩의 기술(개정 2판) Better Way - 6~11

장재성·2021년 6월 28일
0

Better Way

목록 보기
2/4

Better Way 6

- 한 문장에 여러 값을 대입할 때 언패킹(unpacking)을 활용하자

Better Way 7

- iterable code를 작성 할 시, range 보다 enumerate를 활용하자

  • index를 이용한 접근을 최소화 할 수 있다.
  • 코드가 더 명확해 진다.
abc = [1,2,3]
for a, b in enumerate(abc, 1):  # 1은 index 1부터 시작한다는 의미
	print(f'{a}: {b}')

Better Way 8

- 두 개의 list의 값을 활용한 loop 실행이 필요한 경우 zip()을 활용하자

  • enumerate와 마찬가지로 index를 이용한 접근을 최소화 시킬 수 있다.
abc = ['aa', 'bbb', 'cccd']
counts = [len(n) for n in abc]
for x, count in zip(abc, counts):
	print(f'{x} 의 글자수: {count}')
  • zip 은 일반적으로 index의 길이가 같은 list들을 사용한다.
  • zip 사용 시, 두개의 list 중 index 값이 작은 list 만큼 loop 가 반복된다.
  • index 길이가 긴 횟수 만큼 반복이 필요하다면 아래와 같은 방법으로 진행한다.
import itertools
for a, b in itertools.zip_longest(x, y):

Better Way 9

- 파이썬에서는 For/While 같은 반복문 뒤에 else: 를 사용할 수 있다.

  • 이걸 사용하면 코드만 복잡하고 좋은게 하나도 없으니 쓰지말자

Better Way 10

- 파이썬 3.8 부터 walrus(:=)기능을 제공한다.

- 대입식에서 walrus(:=)를 사용하면 변수에 값을 미리 대입하고 그걸가지고 코드에 사용하는 대신 해당 코드에서 바로 변수에 값을 대입함과 동시에 사용이 가능해진다.

a = 10
if a > 5:
	print(a)
이 코드를
if (a:=10) > 5:
	print(a)
이런식으로 한번에 표현이 가능하다.
  • 개인적으로 아직 익숙하지는 않은데 적응되면 코드가 깔끔해질 것 같다

Better Way 11

- 슬라이싱(slicing)을 활용해 리스트의 값들을 좀 더 수월하게 사용할 수 있다.

a = [1,2,3,4,5]
a[:2] #-> [1,2]
a[1:4] #-> [2,3,4]
a[-2:] #-> [4, 5]
a[1:3] = ['a','b'] #-> [1,'a','b',4,5]
b = a[:] # b는 a를 복사한 "새로운" 리스트
b = a # b는 "동일한" 리스트 (메모리상 하나의 리스트를 동시에 가리킴)
* [0:len(a)] -> 0len(a)는 생략가능 *
profile
초심자

0개의 댓글