2011-03-26 5 views
2

값으로 0을 유지 : 여러 제로와 두 개의 빈 요소 목록에 ''빈 요소를 제거하지만, 다음과 같이 내가 목록을 가지고

lst = [-1.33, '', -1.33, -1.33 -2.62, 0, -2.66, 1.41, 0, 0, 1.40, '', 1.37, 0] 

및 부동 번호.

빈 요소를 제거하지만 0은 유지하려면 어떻게해야합니까?

lst2 = filter(None, lst) 

lst2 = [x for x in lst if x if isinstance(x,str) == False] 

을하지만, 그것은뿐만 아니라 제로를 제거합니다

lst2 = [-1.33, -1.33, -1.33 -2.62, 0, -2.66, 1.41, 0, 0, 1.40, 1.37, 0] 

... 다음과 같이 나는 다음과 같은 노력했다.

플로트는 소수점 이하 12자를 반환합니다. 예를 들어 무시하십시오.

어떤 조언이 필요합니까? 감사합니다. .

+0

안녕하세요, 빈 문자열을 여러 공백이 될 수 있습니다. 즉,'''',''',''''. – siva

+0

공간을 계산하려면 x.strip()! = '' –

답변

9

''을 모두 삭제하지 않는 이유는 무엇입니까?

>>> lst2 = [x for x in lst if x != ''] 
>>> lst2 
[-1.33, -1.33, -3.95, 0, -2.66, 1.41, 0, 0, 1.4, 1.37, 0] 
>>> 

또는 당신은 단지 수레와의 int를 유지할 수는 :

>>> [x for x in lst if isinstance(x, (float, int))] 
[-1.33, -1.33, -3.95, 0, -2.66, 1.41, 0, 0, 1.4, 1.37, 0] 

# or a bit fancier 
>>> import numbers 
>>> [x for x in lst if isinstance(x, numbers.Number)] 
[-1.33, -1.33, -3.95, 0, -2.66, 1.41, 0, 0, 1.4, 1.37, 0] 
+0

을 입력하십시오. 이것은 확실히 작동합니다. 이것에 대해서 나 자신으로 대답하려고한다. – seadowg

+0

위대한!. 덕분에 .. – siva

2
>>> l = [x for x in lst if x != ''] 
>>> l 
[-1.3300000000000001, -1.3300000000000001, -3.9500000000000002, 0, -2.6600000000000001, 1.4099999999999999, 0, 0, 1.3999999999999999, 1.3700000000000001, 0] 

괜찮아요.

1

나는 필터 기능을 사용하면 원하는 것을 할 수있는 아름다운 방법이라고 생각합니다.

lst = [-1.33, '', -1.33, -1.33 -2.62, 0, -2.66, 1.41, 0, 0, 1.40, '', 1.37, 0] 
lst2 = filter(lambda x: x != '', lst) 
print lst2 

OUPUT :

[-1.33, -1.33, -3.95, 0, -2.66, 1.41, 0, 0, 1.37, 1.37, 0] 

당신이 읽을 수있는 것처럼 here :

filter(function, iterable) 

이의 당신이

01,235이 무엇인지 살펴 보자
[item for item in iterable if function(item)] 
+0

감사합니다. 도움이됩니다. – siva

3

동일
lst2 = [x for x in lst 
if x 
if isinstance(x,str) == False] 

여기에 if x은 무엇입니까?

또한, 결코 == False== True

사용 그래서 not isinstance(x, str)

당신이 당신의 목록을 가지고 있기 때문에

lst2 = [x for x in lst if isinstance(x, str)] 

또는 다른 같은

lst2 = [x for x in lst if x != ''] 

을 제안해야 결코 사용하지 않는다 문자열과 숫자 모두 그것의 rs, 나는 그것이 당신이이 목록을 만들었던 시점에서 이것을 다루는 것이 더 쉬울 것이라는 점을 의심한다. 물론, 나는 그것을 확신 할 수 없거나 그것을 고치는 법을 알지 못합니다.

+0

아아 ..''x '가 오타였습니다. 잘라 붙이기보다 능숙하게 썼다. 이제 작동합니다! 감사. – siva

관련 문제