2013-10-02 91 views
0

我只是想知道是否有我的一端語法錯誤。我有一個int列表,我想旋轉左邊。我用deque和旋轉(-1),但它返回None。Python旋轉左側int列表與雙轉讓返回無

我要尋找的結果的一個例子:

list1 = [1, 2 , 3] 
rotateLeft = [2, 3, 1] 

這是代碼片段。

from collections import deque 

def rotate_left(nums):   
    return deque(nums).rotate(-1) 

print rotate_left([1, 2, 3]) 
>>> None 

任何人都可以告訴我,如果我做錯了什麼?

+0

在Python中變異可變對象的方法幾乎總是返回'None'。 list.sort()','dict.update()','list.append()',on&on。 –

+0

爲什麼不是lst [-1:] + lst [: - 1]? – gukoff

+0

@Harold - 其實並沒有太多關於這個方法。我想知道爲什麼我得到一個None值。但是謝謝你的替代方法。我認爲這個旋轉到右邊。 – Cryssie

回答

2

deque.rotate什麼也沒有返回。

所以rotate_left應該是:

def rotate_left(nums): 
    q = deque(nums) 
    q.rotate(-1) 
    return list(q) 

幾乎功能/標準庫中修改數據的方法返回什麼。 (例外:dict.setdefault,..)

+0

謝謝。你能否簡要解釋爲什麼我需要再次列出它? – Cryssie

+0

@Cryssie,如果你不需要列表,那麼'return q'就可以了,但任何序列都可以接受。我使用了'list(..)',因爲你指定了'rotateLeft = [2,3,1]'作爲列表。 – falsetru