2013-08-26 15 views
5

Ho scritto un gioco di avventura di testo e, a un certo punto, ho bisogno di prendere un elemento, che è dato dall'input dell'utente, da una lista e spostarlo in un'altra lista . In particolare, non v'è alcun modo per ottenere l'indice di un elemento quando si conosce il nome della voce, oltre qualcosa di simile:Modo più pulito per prelevare elementi da una lista a un'altra

list_one = ["item one", "item two"] 
index_one = list_one.index("item one") 

Il codice che sto utilizzando nel mio script è:

player.items.append(start_room.items.pop(start_room.items.index(next))) 

Dove prossima è l'input, e questo sembra molto disordinato. Se c'è un modo più semplice per farlo, fammi sapere. Grazie!

+1

L'ordine degli articoli negli elenchi è importante? Le liste possono contenere duplicati? Se la risposta è "no" per entrambi, dovresti utilizzare set anziché elenchi. – NPE

+0

puoi provare qui http://codereview.stackexchange.com/questions/tagged/python;) –

+1

btw, non nominare la tua variabile 'next', ombreggia la funzione built-in' next() '. – flornquake

risposta

6

Se si conosce già l'oggetto, non c'è bisogno di chiamare index o pop o qualsiasi altra cosa:

list_one.remove (item) 
list_two.append (item) 
+0

Questo ha senso, grazie! – user2717129

3

io preferisco usare il ritorno di pop() metodo:

list_two.append(list_one.pop(list_one.index(item))) 

E se improvvisamente ti decidere di aver bisogno di indice, non è necessario modificare molto:

i = list_one.index(item) 
list_two.append(list_one.pop(i)) 
Problemi correlati