2017-01-18 1 views
-7

Quelle sera la logique ou le code de ce problème? La fonction reverse() ne prend aucun argument et list[::-1] est également identique. Comment le faire de manière facile?Inverse un ensemble d'éléments de liste et le stocke dans la liste?

exemple, avec:

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

Inverser 5 ... 2, la sortie sera:

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

a beaucoup de downvote! Pourquoi ? –

+3

N'utilisez pas 'list' comme nom de variable, vous faites une ombre sur une [fonction] intégrée (https://docs.python.org/2/library/functions.html#list). –

Répondre

0

Vous pouvez faire quelque chose comme ceci:

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

Si vous voulez qu'il soit plus explicite, vous pouvez utiliser reversed:

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

Celui qui a déprécié cette réponse, pourriez-vous expliquer pourquoi? –

+1

N'a pas downvote, mais probablement parce que cela ne fonctionne que pour les listes avec des éléments uniques. Pas une solution générale comme les autres réponses proposées. – mkiever

+0

je suis vraiment choqué :( –

3

Vous pouvez utiliser l'affectation de tranche de liste, qui modifie la liste en place:

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

Edit: Désolé, j'ai mal compris votre question.

>>> 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

n'est pas ce que l'OP veut – MooingRawr

3

Vous pouvez réattribuer la tranche de la liste à cette même tranche dans le sens inverse

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

merci l'homme cela fonctionne –

+2

Je trouve 'l [1: 5] = inversé (l [1: 5])' plus agréable à lire, mais en principe le – mkiever

+2

'l [4: 0: -1]' serait plus efficace que 'l [1: 5] [:: - 1]', car il ne créerait qu'une seule fois une seule fois –