2015-10-28 42 views
-2

我想將列表中的最小整數向下移動到列表中的一個索引中。
例如:如何更改列表中元素的位置?

>>> move_small_value([5,4,3,2,1]) 
[1,5,4,3,2] 
+1

NYRAHHH,請澄清。你的文本指出你希望它在列表中向下移動*一個*索引,這將提示'5,4,3,1,2'的結果。然而,你的'1,5,4,3,2'的例子表明你想把最低位移到列表的* start *處。我們通常可以使用這個頭銜作爲決勝局,但在這種情況下可以採用任何方式。所以我們需要你對你想要的更具體。另外,你想用'5 4 1 2 1'列表做什麼?哪個'1'應該移動? – paxdiablo

回答

1
def move_small_value(L): 
    min_idx = L.index(min(L)) 
    return [L[min_idx]] + L[:min_idx] + L[min_idx + 1:] 
+0

OP想要一個環形右移。如果示例的輸出是作爲輸入給出的,那麼這將失敗,因爲預期的輸出將是'[5,1,4,3,2]'。 PS:我不是downvoter – inspectorG4dget

+1

我原來是因爲你將一個列表添加到None(L + L.remove)而降低了...反對仍然存在,因爲此功能目前對輸入L – donkopotamus

+0

@ inspectorG4dget具有破壞性,你如何從這個問題中得到答案? –

1
import operator 
def move_small_value(L): 
    small_idx = min(enumerate(L), key=operator.itemgetter(1))[0] 
    answer = L[:small_idx] + [L[small_idx+1]] + [L[small_idx]] + L[small_idx+2:] 
    return answer 
+0

您也可以使用'min(範圍(len(L)),key = L .__ getitem __)'找到最小索引 –

+0

@JohnLaRooy:這是真的。另外,爲什麼更改用戶名?我很喜歡你的舊的 – inspectorG4dget