2013-08-26 8 views
5

Pisałem przygodową grę tekstową iw pewnym momencie potrzebuję wziąć przedmiot, który jest podany przez użytkownika, z jednej listy i przenieść go na inną listę . W szczególności, czy jest jakiś sposób, aby uzyskać indeks elementu, gdy znasz nazwę elementu oprócz coś takiego:Czystszy sposób na przenoszenie przedmiotów z jednej listy na inną

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

kodu używam w moim skryptu jest:

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

Gdzie następny to wejście, a to wydaje się bardzo nieporządne. Jeśli jest to łatwiejszy sposób, daj mi znać. Dzięki!

+1

Czy kolejność pozycji na liście jest ważna? Czy listy mogą zawierać duplikaty? Jeśli odpowiedź brzmi "nie" dla obu, powinieneś używać zestawów zamiast list. – NPE

+0

możesz spróbować tutaj http://codereview.stackexchange.com/questions/tagged/python;) –

+1

btw, nie nazwij swojej zmiennej 'next', to cienie wbudowanej funkcji' next() '. – flornquake

Odpowiedz

6

Jeśli już wiesz, element, nie ma potrzeby, aby zadzwonić index lub pop albo cokolwiek:

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

To ma sens, dzięki! – user2717129

3

wolę używać zwrotu pop() metody:

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

A jeśli nagle cię zdecyduj się na indeks, nie musisz wiele zmieniać:

i = list_one.index(item) 
list_two.append(list_one.pop(i)) 
Powiązane problemy