리스트에 빈 스트링을 지워주려면?

조회수 7588회

발생하는 문제 및 실행환경

리스트 원소 중에 빈 스트링을 다 지워주려면 어떻게 해야 하나요? 제가 쓴 방법보다 더 좋은 코드나 더 파이썬스러운 코드를 알려주세요

소스코드

while '' in str_list:
    str_list.remove('')

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    1. filter(function, iterable)를 사용하는 4가지 방법:

    str_list = filter(None, str_list) # 빠름
    str_list = filter(bool, str_list) # 빠름
    str_list = filter(len, str_list)  # 약간 느림
    str_list = filter(lambda item: item, str_list) # list 내장(comprehension)보다 느림
    

    4가지 방법의 속도를 비교해보면 다음과 같이 나옵니다.

    >>> timeit('filter(None, str_list)', 'str_list=["a"]*1000', number=100000)
    2.4797441959381104
    >>> timeit('filter(bool, str_list)', 'str_list=["a"]*1000', number=100000)
    2.4788150787353516
    >>> timeit('filter(len, str_list)', 'str_list=["a"]*1000', number=100000)
    5.2126238346099854
    >>> timeit('[x for x in str_list if x]', 'str_list=["a"]*1000', number=100000)
    13.354584932327271
    >>> timeit('filter(lambda item: item, str_list)', 'str_list=["a"]*1000', number=100000)
    17.427681922912598
    

    2. list 내장(comprehension)을 쓰는 방법

    strings = ["first", "", "second"]
    [x for x in strings if x]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)