2010-09-09 8 views
1

donc je liste MLIST = [ « list1 », « liste2 », « list8 », « list99 »]méthode propre pour obtenir une entrée dans une liste et le définir comme la première entrée

Je veux choisir une valeur dans cette liste dire 'list8' et l'avoir de sorte qu'il est la première entrée dans la liste ['list2', 'list1', 'list8', 'list99']

comment puis-je commander juste ceci une entrée tout ce que je peux penser au moment est -get l'indice -remove que l'entrée -Insérer (0, entrée)

Qu'est-ce qu'un moyen propre de faire cela?

acclamations ..

+0

Votre question semble contenir une erreur. Le résultat attendu ne devrait-il pas être '['list8', 'list1', 'list2', 'list99']'? –

+0

oui oui, mon erreur –

Répondre

0

Je ne sais pas, je compris la bonne question, mais cette approche peut travailler

mList = ['list1', 'list2', 'list8', 'list99'] 
idx = 2 
mlist.insert(0, mlist.pop(idx)) 

produira:

['list8', 'list1', 'list2', 'list99'] 

Voici une autre façon:

mList = ['list1', 'list2', 'list8', 'list99'] 
value = 'list8'  
mlist.remove(value) 
mlist.insert(0, value) 
2

Votre application gardon est raisonnable, mais j'utiliserions retirer directement sur la valeur plutôt que de trouver d'abord l'index, puis enlever:

mList.remove('list2') 
mList.insert(0, 'list2') 

Notez que ces opérations ne sont pas efficaces sur une liste. Il est plus efficace d'ajouter à la fin de la liste que d'insérer au début. Vous pouvez utiliser une structure de données différente, telle que la liste liée. Une autre alternative consiste à inverser l'ordre dans lequel vous stockez les éléments.

+0

ne savait pas à propos de la suppression directement, c'est plus agréable, les listes auront seulement <100 entrées –

+0

Votre suggestion d'utiliser une liste liée en Python est intrigante. Comment pourrait-on faire ça? – jathanism

+0

@jathanism: http://stackoverflow.com/questions/2154946/python-linked-list-o1-insert-remove –

0
def move_up(val, lst): 
    lst.insert(0, lst.pop(lst.index(val))) 
move_up('list8', mList) 
2

D'autres ont posté des solutions qui conservent l'ordre des éléments qui ne sont pas déplacés vers l'avant. Si vous ne vous en souciez pas, il suffit d'échanger le premier élément avec celui que vous voulez déplacer vers l'avant.

mList = ['list1', 'list2', 'list8', 'list99'] 

i = mList.index('list8') 
mList[0], mList[i] = mList[i], mList[0] 

print mList # ['list8', 'list2', 'list1', 'list99'] 
Questions connexes