www.codewars.com/kata/53dbd5315a3c69eed20002dd/train/python
이 문제는 입력받은 배열 중 string 타입을 제외하는 문제입니다.
이 변수 타입을 구별하기 위해서 여러 가지 방법이 있지만 대표적으로 isinstance와 type이 있습니다.
(사실 지금 이 두 가지밖에 생각이 안 나네요... 더 좋은 방법 있으시면 댓글로 남겨주세요. 추가하도록 하겠습니다.)
1. isinstance : 참/거짓으로 리턴, isinstance(변수, 타입)
def filter_list(l):
answer = []
for j in l:
if isinstance(j, int):
answer.append(j)
return answer
|
if 문에서 j의 변수가 int 타입 일 경우 답에 추가하도록 설정을 하였는데, 이 이유는 입력 배열이 non-negative intergers(음수가 없는 int 타입 변수)와 strings라고 되어있기 때문입니다. 만약 2가지 타입이 아닌 여러 가지 타입이 있을 경우 string 타입만 제외해야 할 경우 if not을 사용하시면 됩니다. string 타입의 경우 python에서는 str로 사용하시면 됩니다.
def filter_list(l):
answer = []
for j in l:
if not isinstance(j, str):
answer.append(j)
return answer
|
2. type
def filter_list(l):
return [i for i in l if not type(i) is str]
|
type의 경우 이런식으로 사용해 주시면 됩니다. if문과 for문을 한 줄로 표현해 봤습니다. 익숙하지 않으신 분이라면 isinstance에서 if문만 바꿔주시면 됩니다. 한 줄로 코딩하는 것은 항상 좋다고 할 수 없으며 익숙해지시면 사용하시면 됩니다.
제 블로그에서 이 글을 보시는 분이라면 python이나 코딩이 익숙하지 않은 분일 가능성이 높습니다.
사실 이 문제는 약 8개월 전 python을 시작한 지 얼마 되지 않았을 때 만난 문제였습니다.
그 당시에는 문제를 어떻게 풀어야 할지 몰라서 인터넷으로 검색하면서 무작정 코드를 복사하면서 풀었던 기억이 납니다.
한 줄로 표현한 if문과 for문의 경우 이해하려 하지 않으셔도 됩니다.
저도 8개월간 매일 코딩을 하면서 요즘에서야 익숙해진 것이니까요.
'알고리즘 > 코드워' 카테고리의 다른 글
[python]Complementary DNA (0) | 2020.10.28 |
---|---|
[python]Take a Ten Minute Walk (0) | 2020.10.27 |
[python]Roman Numerals Encoder (0) | 2020.05.23 |
[python]Roman Numerals Decoder (0) | 2020.05.23 |
[python]IP Validation (0) | 2020.05.16 |