반응형
리스트 컴프리헨션
"홀수인 경우 2를 곱해 출력하라"는 조건에 대해서 List Comprehension을 사용하면 다음과 같이 간단히 코딩할 수 있다.
[n * 2 for n in range(1, 10+1) if n % 2 == 1]
List Comprehension을 사용하지 않을 경우 코드가 훨씬 길고 a라는 별도의 리스트 변수 또한 필요해진다.
a = []
for n in range(1, 10 + 1):
if n & 2:
a.append(n * 2)
print(a)
제너레이터
모든 변수를 메모리에 생성하지 않고, 생성 조건만을 가져 메모리에 대한 효율성을 얻을 수 있다.
a = [n for n in range(1000000)] # List
b = range(1000000) # Generator
위 코드의 경우 a에는 이미 생성된 값이 담기고, b에는 생성 조건만 존재한다.
sys.getsizeof(a)
8697464
sys.getsizeof(b)
48
yield 사용시, 중간값을 리턴한 다음 함수는 종료되지 않고 계속해서 맨 끝에 도달할 때까지 실행된다.
def get_natural_number():
n = 0
while True:
n += 1
yield n
get_natural_number()
<generator object get_natural_number at 0x10d3139d0>
# next()로 다음 값을 생성할 수 있다.
g = get_natural_number()
for _ in range(0, 100):
print(next(g))
1
2
3
...
enumerate
순서가 있는 자료형(list, set, tuple 등)을 인덱스를 포함한 enumerate 객체로 리턴한다.
a = [1, 2, 3]
enumerate(a)
<enumerate abject at 0x1010f83f0>
list(enumerate(a))
[(0,1), (1,2), (2,3)]
# for문에서 다음과 같이 활용해서 인덱스를 별도의 변수로 관리할 수 있다.
for i, v in enumerate(a):
print(i, v)
나눗셈 연산자
>>> 5 / 3
1.66666666667
>>> type(5 / 3)
<class 'float'>
>>> 5 // 3 # 정수형을 나눗셈할 때 동일한 정수형으로 리턴하며 내림 연산자의 역할을 한다.
1
>>> type(5 // 3)
<class 'int'>
>>> 5 % 3 # 나눗셈 연산의 나머지 값을 리턴한다.
2
idx = 1
fruit = "Apple"
>>> print('{}: {}'.format(idx, fruit))
1: Apple
>>> print(f'{idx + 1}: {fruit}')
2: Apple
코딩 스타일
- 추천 책
1. Clean Code 클린 코드
2. 프로그래밍 수련법
- 구글 파이썬 스타일 가이드
반응형
'프로그래밍 > [ Python ]' 카테고리의 다른 글
[문자열 조작] 문자열 뒤집기 (0) | 2021.01.11 |
---|---|
[문자열 조작] 유효한 팰린드롬 (0) | 2021.01.11 |
[1-1] 코딩 인터뷰 (0) | 2020.11.17 |
[Python] bisect (0) | 2020.08.24 |
[Python] 슬라이싱(slicing) 기본 (0) | 2020.08.18 |