Hits

헬퍼 함수 작성하기

  • 복잡하고 같은 로직을 반복해서 사용할 때 헬퍼 함수를 사용한다.
  • if/else 표현식을 or이나 and 연산자를 대신해서 사용한다.
# bad
my_value.get('red') or 0

# good
red = my_value.get('red')
red = int(red[0]) if red[0] else 0

슬라이싱

  • 슬라이싱 결과는 새로운 리스트이다.
  • 슬라이스 할당은 새로 들어온 값에 맞춰 늘어나거나 줄어든다.
  • 한 슬라이스에 start, end, stride를 다 지정하지 말자.
a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
a[2:4] = ['1']

# ['a', 'b', '1', 'e', 'f', 'g']

list comprehension

  • 리스트 컴프리헨션을 사용하자. map과 filter를 대신해서 사용할 수 있다.
  • dict와 set도 지원한다
  • 표현식은 하나만 사용하자
a = [1, 2, 3, 4]
squares = [i**2 for i in a]
squares_map = map(lambda x: x ** 2, a)

# [1, 4, 9, 16]

generator

  • 메모리 이슈가 있다면 제네레이터를 사용하자
  • 큰 입력을 빠르게 처리할 때 쓰일 수 있다.
it = (len(x) for x in open('/temp/my_file.txt'))
print(next(it))

enumerate

  • list의 index와 value를 같이 loop 할 수 있다.
for i, value in enumerate(tmp_list):
	print(i, value)

zip

  • 이터레이터를 짝지어서 다루고 싶을 때 쓴다.
names = ["Lisa", "Bang", "James"]
nums = [1, 2, 3]

for num, name in zip(nums, names):
	print(num, name)

for / else

  • for문이 중간에 break 등으로 끊기지 않고, 끝까지 수행 되었을 때 else문 수행

  • for문 뒤 else 쓰지말자

try / except / else / finally

  • else 블록은 try 블록의 코드에서 예외가 발생하지 않을 때 추가 작업을 명시하는 시각적 효과가 있다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN