2014-01-15 1 views
1

죄송 합니다만 간단한 질문입니다. 모든 비 - 제로 요소 (임의의 순서로) 왼쪽에 집중 얻을 수 있도록 그것을 분류하는 효율적인 방법을 무엇Python의 경우 고정 크기 목록에서 요소를 정렬하고 덩어리로 만드는 방법

inputlist = [(0,0), (_,_), (_,_), (0,0), (0,0), (_,_), (0,0)] 

:

sortlist = [(_,_), (_,_), (_,_), (0,0), (0,0), (0,0), (0,0)] 
+0

변수 _을 사용하고 있습니까? 아니면 단순히 자리 표시 자입니까? 이 변수는 파이썬에서 몇 가지 마법적인 일을합니다. – wim

+0

그냥 자리 표시 자입니다. 혼란에 대해 죄송합니다. –

답변

3

사용 핵심 나는 목록이있는 경우

:

sorted(inputlist, key=lambda t: -1 if t != (0, 0) else 0) 

이이 단순화 될 수있다 : 그 -10처럼 아무것도 아닌 제로에 대한 낮은를 반환 False 이후

sorted(inputlist, key=lambda t: t == (0, 0)) 

True

데모 전에 정렬 :

>>> import random 
>>> r = lambda: random.randint(1, 10) 
>>> inputlist = [(0,0), (r(),r()), (r(),r()), (0,0), (0,0), (r(),r()), (0,0)] 
>>> sorted(inputlist, key=lambda t: t == (0, 0)) 
[(4, 5), (3, 2), (3, 3), (0, 0), (0, 0), (0, 0), (0, 0)] 

'0'이 아닌 튜플은 바로 출력 목록의 전면으로 이동, 원래의 순서로 남아 있습니다.

3
sorted(my_list, key=(0,0).__eq__) 
관련 문제