2017-05-21 1 views
0

temp 정렬 전에 할당 된 변수도 sorted이됩니다. 왜?파이썬 정렬은 이전 변수의 값을 변경합니다.

그리고 목록에 임시 변수를 만드는 가장 좋은 방법은 무엇입니까?

>>> arr = [3, 2, 4, 1] 
>>> temp = arr 
>>> arr.sort() 
>>> arr 
[1, 2, 3, 4] 
>>> temp 
[1, 2, 3, 4] 

는 반면 :

>>> a = 5 
>>> b = a 
>>> a 
5 
>>> b 
5 
>>> a = 1000 
>>> a 
1000 
>>> b 
5 
+0

임시 작업을하지 마십시오. 대신 arr을 작성하십시오. – mikey

+0

'temp = arr'은 둘 다 동일한'list'에 대한 이름임을 의미합니다. –

+1

다른 시퀀스 인 [arr = sorted (temp)]에서 [** ** 정렬 된 ** **] (https://docs.python.org/2/library/functions.html#sorted) 목록을 만들 수 있습니다. 참고 항목 [How To : sorting] (https://wiki.python.org/moin/HowTo/Sorting) –

답변

2

을 실행하면 그것은 .sort()를 사용하여 원래의 목록을 수정하는 것을 주목할 필요가 있음을 볼 수 새로운 분류 목록. This 웹 사이트에서 주제에 대한 좋은 설명이 있습니다.

1

temp 동일한 목록을 가리키는 이름입니다. 목록의 사본을 만들려면

temp = list(arr) 

을 할 수 sorted()가 반환됩니다 반면 당신은 당신이

arr = [1, 2, 3, 4] 
temp = list(arr) 
temp[0] = 2 
arr != temp # will return true because it is a new object 
+0

'temp'는 포인터가 아닌 이름입니다. 파이썬에는 포인터가 없습니다. 이름은 null 일 수 없습니다. –

+0

@ PeterWood를 지적 해 주셔서 감사합니다. 답변을 업데이트했습니다. –

+0

그들은 sorting에 대해서도 물어 보았으므로 .sort()를 사용하면 원래의 목록을 수정하고 sorted()는 새 정렬 된 목록을 반환한다는 점에 유의할 필요가 없습니다. – Jeremy

관련 문제