2012-11-11 2 views
0

를 모르는 이는 파이썬을 사용 :방법이 내가이 퀵 기능에서

def qsort2(list): 
    if list == []: 
     return [] 
    else: 
     pivot = list[0] 
     # can't understand the following line 
     lesser, equal, greater = partition(list[1:], [], [pivot], []) 
    return qsort2(lesser) + equal + qsort2(greater) 

def partition(list, l, e, g): 
    if list == []: 
     return (l, e, g) 
    else: 
     head = list[0] 
     if head < e[0]: 
      return partition(list[1:], l + [head], e, g) 
     elif head > e[0]: 
      return partition(list[1:], l, e, g + [head]) 
     else: 
      return partition(list[1:], l, e + [head], g) 

나는 주석 아래의 문장을 이해하지 않습니다. 누군가이 문장의 의미가 무엇인지 말해 줄 수 있습니까?

+1

덧붙여,이 변수 이름 - "목록"으로 "목록"을 사용하는 것이 좋은 생각이 아니다 이미 내장 된 파이썬 뭔가의 이름이고, 그 이름을 재정의하는 경우에 이상한 동작이 발생할 수 있습니다 . 코드가 제대로 작동하지만 나중에는 어려운 경우를 찾기보다 현명한 습관을 개발하고 싶습니다. – abought

답변

8

튜플을 3 개의 변수로 압축을 풉니 다.

def foo(): 
    return (1, 2, 3) 

a, b, c = foo() 
print(a) # prints "1" 
print(b) # prints "2" 
print(c) # prints "3" 
+0

감사합니다.하지만 파티션이 4 개 항목을 소비합니다. 여기에 3 개만 있습니다. 첫 번째 것은 어떨까요? – Konie

+3

'partition' *이 반환하는 것은 3 개 튜플 ('return (l, e, g)')입니다. – rightfold

+0

고마워요, 그래서 첫 번째 항목에 대해서는 중요하지 않습니다. – Konie