Vinnaren i pepparkakshustävlingen!
2016-02-14, 03:04
  #1
Medlem
Tjena,

Försöker skriva kod som ska hämta index-koordinaterna till en lista från en annan lista i Python.

my_list = [10, 11, 12, 13, 14, 15]
my_index_list = [1, 3, 5]

Dvs, om jag har ovanstående två listor så vill jag kunna ge my_list elementen från my_index_list, så att output = [11, 13, 15]

Det som jag logiskt sett tycker borde funka är:

for x in my_index_list:
my_list[my_index_list[x]]

Error-meddelandet blir "list index out of range" och så printar den "10", vilket jag inte förstår. Någon som kan förklara error-meddelandet för mig och hjälpa mig med fungerande kod?
Citera
2016-02-14, 04:11
  #2
Medlem
Kanske missuppfattade frågan men här har du iaf kod som ger dig en ny lista med de index element du är ute efter:

my_list = [10, 11, 12, 13, 14, 15]
my_index_list = [1, 3, 5]
new_list=list()

for x in my_index_list:
new_list.append(my_list[x])

New_list blir nu [11,13,15]
Citera
2016-02-14, 04:18
  #3
Medlem
ojns avatar
Byt till detta:
Kod:
for x in my_index_list:
  print 
my_list[x
Ingen anledning att göra en helt ny lista.

> Edit I din kod försöker du köra my_index_list[5], vilket inte finns.
__________________
Senast redigerad av ojn 2016-02-14 kl. 04:22. Anledning: lade till en förklaring
Citera
2016-02-14, 08:33
  #4
Moderator
vhes avatar
Använd kodtaggar.

Övriga språk --> Python
/Moderator
Citera
2016-02-14, 10:34
  #5
Medlem
vtcs avatar
En smidigare och även mer pythonesque lösning är att använda en list comprehension:
Kod:
[my_list[x] for x in my_index_list]
Output:
Citat:
>>> my_list = [10, 11, 12, 13, 14, 15]
>>> my_index_list = [1, 3, 5]
>>> [my_list[x] for x in my_index_list]
[11, 13, 15]
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback