Better Way 6
- 한 문장에 여러 값을 대입할 때 언패킹(unpacking)을 활용하자
Better Way 7
- iterable code를 작성 할 시, range 보다 enumerate를 활용하자
- index를 이용한 접근을 최소화 할 수 있다.
- 코드가 더 명확해 진다.
abc = [1,2,3]
for a, b in enumerate(abc, 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]
a[1:4]
a[-2:]
a[1:3] = ['a','b']
b = a[:]
b = a
* [0:len(a)] -> 0과 len(a)는 생략가능 *