프로그래밍/[ Python ]

[1-2] 파이썬

gooooooood 2020. 11. 18. 23:17
반응형

리스트 컴프리헨션

"홀수인 경우 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

 

print

idx = 1
fruit = "Apple"

>>> print('{}: {}'.format(idx, fruit))
1: Apple

>>> print(f'{idx + 1}: {fruit}')
2: Apple

 

코딩 스타일

 

- 추천 책

1. Clean Code 클린 코드

2. 프로그래밍 수련법

 

- 구글 파이썬 스타일 가이드

http://google.github.io/styleguide/pyguide.html 

반응형

'프로그래밍 > [ 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