2017-02-10 1 views
0

내 코드는 python 3로 작성되었으며 문장을 출력합니다. 아래 그림과 같이 는 2 ~ 3 자리 숫자의 모든 상동 제품을 반복해야합니다왜 목록을 정렬해도 없음을 반환합니까?

mylist=[] 
for i in range(999,99,-1): 
    for x in range(999, i-1, -1,): 
     number=i*x 
     number=str(number) 
     if number==number[::-1]: 
      #print(number)   
      mylist.append(number) 
mylist=mylist.sort(reverse=True) 
print(mylist) 

참고 주석 인쇄. 이것이 여전히 자리를 잡을 때 밖으로 인쇄되어야하는 모든 문장이 나왔습니다. print 문을 사용하지 않고 코드를 실행할 때 콘솔은 '없음'만 출력합니다.

내 논리가 순서대로 볼 수있는 한, 왜 이런 일이 발생합니까? EDIT : 또한 목록을 역순으로 정렬하면 99999가 먼저옵니다. 나는 파이썬이 연속 9를보고 그것이 가장 크다고 생각하기 때문에 이것을 모은다. 그러나 실제로 가장 큰 숫자를 얻는 쉬운 방법이 있습니까?

+5

당신이'None''반환하는 현재 위치에서 작동되는 .sort'를 호출 한 결과에'mylist'을 결합한다. 그냥'mylist.sort (reverse = True)'를해라. –

+0

@Shawn Li 편집 내용이 무엇인지 모르 시겠지만, 숫자는 기본적으로 숫자가 증가하는 순서로 정렬됩니다. 그러나 가장 먼저 숫자를 넣는'reverse = True'를 추가했습니다. 왜냐하면 글쎄, * 실제 * 가장 큰 숫자. – JulienD

+0

@JulienD 99999가 가장 먼저 나오므로 숫자 순서로 정렬되지 않지만 101101 같은 숫자는 99999보다 큽니다. 따라서 요점은 가장 중요한 숫자 인 무한대에 가장 가까운 숫자를 먼저 만들 수 있습니까? –

답변

5

list.sort()은 항상 없음 (목록이 내부 정렬 됨)을 반환합니다. 원하는 것은 새로운 정렬 목록을 반환하는 sorted(list)입니다.

그럼 당신은 이런 식으로 정렬 할 수 있습니다

mylist = [int(x) for x in mylist] 
mylist.sort(reverse=True) 
mylist = [str(x) for x in mylist] 
관련 문제