- 작성시간 : 2013/04/16 10:02
- 퍼머링크 : mcchae.egloos.com/11011024
- 덧글수 : 4
문자열이 들어있는 목록이 있다고 가정합니다.

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 인 것을 제외하고 가져오게 됩니다..
(감사합니다)

지난번 람다함수관련 내용과,
많이 사용하고픈 내용입니다.
어느분께는 도움이 되셨기를...



덧글
filter 함수의 첫번째 argument로 None을 넣으면
python의 booleanness 판정에서 False로 나오는 것을 걸러주는데
None이거나 False일때
숫자의 경우 = 값이 0일 때
문자열이거나 컬렉션의 경우 = 비어 있을 때 등을 제외하게 됩니다.
[x for x in y if x]
해도 될것 같아요~