[Python] 목록의 필터링 적용 Develop Tip

문자열이 들어있는 목록이 있다고 가정합니다.

y = ['a', '', 'b', None, 'c', '']

목록 y 중에서 None 이거나 길이가 0인 '' 과 같은 문자열만을 제외하고 싶습니다.
뭐 간단하게 다음과 같이 돌리면 됩니다.

z = []
for e in y:
if e is not None and len(e)>0:
z.append(e)
y = z

이 줄 역시나 다음과 같은 한 줄로 치환 가능합니다.

y = filter(lambda e: e is not None and len(e) > 0, y)

또는 댓글의 순록님의 조언대로,

y = filter(None, y)
None 이라고 하면 y 목록 안이 True 인 것만 가져오는데,
None 혹은 len(ele)<=0 인 것을 제외하고 가져오게 됩니다..
(감사합니다)





목록 관련 내용인 목록과 셑, 목록 소팅목록 초기화 등과 더불어
많이 사용하고픈 내용입니다.

어느분께는 도움이 되셨기를...

핑백

덧글

  • 여신같은 순록 2013/04/16 11:40 # 답글

    lst = filter(None, lst) 로 간단하게 가능합니다.

    filter 함수의 첫번째 argument로 None을 넣으면
    python의 booleanness 판정에서 False로 나오는 것을 걸러주는데

    None이거나 False일때
    숫자의 경우 = 값이 0일 때
    문자열이거나 컬렉션의 경우 = 비어 있을 때 등을 제외하게 됩니다.
  • 지훈현서아빠 2013/04/16 12:06 #

    그런 방법이 있었군요~~ 감사합니다~ ^^
  • hurihuni 2013/04/16 17:43 # 답글

    list comprehension 을 사용해서
    [x for x in y if x]
    해도 될것 같아요~
  • 지훈현서아빠 2013/04/16 18:53 #

    좋은 의견 감사드립니다~ ^^
댓글 입력 영역

구글애드텍스트