2017-06-21 89 views
0

我試圖創建一個列表(b),它是列表(a)將k的成員向左旋轉k次。我想出了這個關於Python 3:Python 3中的左側列表旋轉

n = 5 
k = 4 
a = [1,2,3,4,5] 
b = [] 

for i in a: 
    if (i + k) <= (n - 1): 
      b.append(a[i+k]) 
     elif (i+k-n) < (n-1): 
       b.append(a[i+k-n])  
print(b) 

但由於某些原因,這是行不通的,因爲當我告訴打印(二)它返回一個列表,酷似列表

上午什麼我錯過了嗎?

+1

注意''我循環通過在'了'的_values_,這應該是相當無關,你的算法,你與他們做算術,就好像他們是指數。 – RemcoGerlich

+1

[Python列表旋轉]的可能重複(https://stackoverflow.com/questions/9457832/python-list-rotation) – JohanL

+0

@RemcoGerlich你是完全正確的!更改for循環for while循環做了訣竅 – Salvatore

回答

0

感謝@RemcoGerlich幫我看看我的錯!下面是我很快就修好了我的代碼:

n = 5 
k = 4 
a = [1,2,3,4,5] 
b = [] 
i = 0 
while (i < n): 
    if (i + k) <= (n - 1): 
      b.append(a[i+k]) 
    elif (i+k-n) < (n-1): 
      b.append(a[i+k-n]) 
    i = i+1 
print(b) 
3

一個簡單的辦法:

k = k % len(a) #we don't care about shifting x*len(a) times since it does not have any effect 

b = a[k:] + a[:k] 
+0

hi @YoavGlazner,你能爲我們解開一下你的代碼嗎?經過15年的休息後,我正在編程,呵呵,我不太熟悉Python的語法,因爲我真的剛開始學習它 – Salvatore

+0

@Salvatore - 我想你不知道** python的** * slice-符號* - 看看這個答案https://stackoverflow.com/questions/509211/explain-slice-notation –

+0

謝謝! :) @YoavGlazner – Salvatore