1. 팀원과의 코드 리뷰 - ad 제거하기
문제점
https://school.programmers.co.kr/learn/courses/30/lessons/181870
시도해 본 것들
for 문 사용하기
def solution(strArr):
answer = []
for s in strArr:
if 'ad' not in s:
answer.append(s)
return answer
문제가 제시한 그대로 for문으로 시도
list comprehension 사용하기
def solution(strArr):
return [s for s in strArr if 'ad' not in s]
for문이 보이면 매일같이 시도하는 list comprehension이다.
lambda 사용하기
def solution(strArr):
# filter로 ad가 없는 s만 가져오기
return list(filter(lambda s: 'ad' not in s, strArr))
이번에 사용해 볼 때는 filter까지 사용해야 했지만, 생각보다 어렵지 않았다.
list comprehension으로 축약하는 연습을 해서 그런지 lambda를 처음 배울 때 보다 쉽게 가능했다.
팀원과의 코드 리뷰
팀원의 find 사용 코드
def solution(strArr):
answer = []
for i in strArr:
if i.find('ad') == -1:
answer.append(i)
return answer
get()을 했을 때 값이 없으면 None이 나오는 것처럼 find도 에러가 아닌 -1을 출력해서 이런 방법이 가능했다.
값이 존재하지 않으면 에러를 일으키는 index와 상황을 생각하면서 골라서 사용하면 될 것 같다.
list comprehension, lambda 비교하기
return [s for s in strArr if 'ad' not in s]
return list(filter(lambda s: 'ad' not in s, strArr))
# for문 범위 설정
list comprehension = for s in strArr
lambda = lambda s: s, strArr
basic = for s in strArr:
# if문 조건 설정
list comprehension = if 'ad' not in s
lambda = filer('ad' not in s)
basic = if 'ad' not in s:
# 리스트에 추가
list comprehension = []
lambda = list()
basic = answer.append(s)
list comprehension을 처음 사용할 때도 그랬지만 비교할 코드가 있으면 형태가 흡사해서 이해하기 한결 쉽다.
해결 방법
def solution(strArr):
return list(filter(lambda s: 'ad' not in s, strArr))
알게 된 점
lambda를 따라 하는 예시가 아닌 스스로 처음 써 봤다. 최근에 list comprehension으로 만들고 ''.join으로 풀었던 적이 많은데 lambda를 사용하면 그런 상황을 줄일 수 있을 것 같다.
filter도 처음 봤을 때 유용하겠다 싶은 생각을 했는데 코드 구현과정에서 생각의 흐름을 따라가면 보통 if문으로 처리하기 때문에 filter를 써야겠다는 생각을 잘 못하는데 이번 기회에 사용할 수 있었다.
'개발일지 > TIL' 카테고리의 다른 글
TIL 23-05-06 백준 알고리즘 - 세준세비 (0) | 2023.05.06 |
---|---|
TIL 23-05-05 코딩테스트 입문 완료 (0) | 2023.05.05 |
TIL 23-05-03 팀원과의 코드 리뷰 - 전국 대회 선발 고사 (0) | 2023.05.03 |
TIL 23-05-02 페어프로그래밍 - OX 퀴즈 (1) | 2023.05.02 |
TIL 23-05-01 팀원과의 코드리뷰 - 한 번만 등장한 문자 (0) | 2023.05.01 |