2013-10-09 114 views
0

我正在嘗試編寫一個能夠在python3中反轉列表的程序。我第一次嘗試:爲什麼在Python中交換失敗?

def reverse(lst): 
    """ Reverses lst in place. 
    >>> x = [3, 2, 4, 5, 1] 
    >>> reverse(x) 
    >>> x 
    [1, 5, 4, 2, 3] 
    """ 
    n = len(lst) 
    for i in range(n//2): 
     lst[i], lst[n-i-1] = lst[n-i-1], lst[i] 

它失敗了,我得到的x是原始值。然而,當我改變了我的代碼,這樣,它的工作:

def reverse(lst): 
    """ Reverses lst in place. 
    >>> x = [3, 2, 4, 5, 1] 
    >>> reverse(x) 
    >>> x 
    [1, 5, 4, 2, 3] 
    """ 
    n = len(lst) 
    for i in range(n//2): 
     temp = lst[i] 
     lst[i] = lst[n-i-1] 
     lst[n-i-1] = temp 
+1

你原來的代碼工作得很好。 –

回答

2

它按預期工作:

>>> def reverse(lst): 
...  n = len(lst) 
...  for i in range(n//2): 
...   lst[i], lst[n-i-1] = lst[n-i-1], lst[i] 
... 
>>> lst = [1,2,3,4,5] 
>>> reverse(lst) 
>>> print(lst) 
[5, 4, 3, 2, 1] 

順便說一句,你爲什麼不使用list.reverse

>>> lst = [1,2,3] 
>>> lst.reverse() 
>>> lst 
[3, 2, 1] 
+0

是啊...現在爲我工作..我不知道那裏發生了什麼..這只是我試圖解決的一個問題。 – xiadaomike

相關問題