알고리즘/코드워

[python]List Filtering

(ㅇㅅㅎ) 2020. 10. 26. 22:31
728x90
반응형

www.codewars.com/kata/53dbd5315a3c69eed20002dd/train/python

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

 

이 문제는 입력받은 배열 중 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