2017-01-18 2 views
-7

Was wird die Logik oder der Code dieses Problems sein? Die reverse() Funktion nimmt kein Argument und list[::-1] ist auch das gleiche. Wie geht es leicht?Eine Reihe von Listenelementen umkehren und in der Liste speichern?

Beispiel gegeben:

list = [1,5,4,3,2,6] 

5 Rückfahrkame ... 2, wird der Ausgang sein:

list = [1,2,3,4,5,6] 
+0

bekam eine Menge Downvote die Scheibe der Liste zu gleichen Scheibe neu zuweisen! Warum ? –

+3

Verwenden Sie nicht 'list' als Variablennamen, sondern eine integrierte [function] (https://docs.python.org/2/library/functions.html#list). –

Antwort

0

Sie so etwas tun könnte:

Sie
l = [1,5,4,3,2,6] 
index5 = l.index(5) 
index2 = l.index(2) 
l[index5:index2+1] = l[index2:index5-1:-1] 

Wenn Wollen Sie es expliziter, könnten Sie reversed:

verwenden 10
l[index5:index2+1] = reversed(l[index5:index2+1]) 
+1

Wer auch immer diese Antwort abgelehnt hat, können Sie erklären warum? –

+1

Es wurde nicht downvote, aber wahrscheinlich, weil es nur für Listen mit eindeutigen Elementen funktioniert. Keine allgemeine Lösung wie die anderen vorgeschlagenen Antworten. – mkiever

+0

ich bin wirklich schockiert :( –

3

Sie Liste slice Zuordnung verwenden könnte, die die Liste an Ort und Stelle modifiziert:

>>> L = [1, 5, 4, 3, 2, 6] 
>>> L[1:5] = L[4:0:-1] 
>>> L 
[1, 2, 3, 4, 5, 6] 
0

Edit: Sorry, ich Ihre Frage falsch verstanden.

>>> l = [1, 5, 4, 3, 2, 6] 
>>> temp = l[1:5] 
>>> temp.reverse() 
>>> l[1:5] = temp 
>>> l 
>>> [1, 2, 3, 4, 5, 6] 
+2

ist nicht was OP will. – MooingRawr

3

Sie können in umgekehrter

l = [1,5,4,3,2,6] 
l[1:5] = l[1:5][::-1] 
print(l) 
#[1, 2, 3, 4, 5, 6] 
+0

danke man es funktioniert. –

+2

Ich finde 'l [1: 5] = umgekehrt (l [1: 5])' netter zu lesen, aber im Prinzip die Das selbe. – mkiever

+2

'l [4: 0: -1]' wäre effizienter als 'l [1: 5] [:: - 1]', da es nur einmal eine neue Liste erstellen würde. –

Verwandte Themen