Seite 1 von 1

vervielfachen von listindizes

Verfasst: Freitag 23. März 2007, 19:58
von drewsilson
Hallo, hab mal wieder ein kleines problem:

habe zwei einfache listen:

Code: Alles auswählen

erste = [a,b,c,d]
zweite = [2,3,4,5]
jetzt würde ich gerne folgendes tun:
index 0 aus 'erste' um das index-0-fache aus 'zweite' vervielfachen,
index 1 aus 'erste' um das index-1-fache aus 'zweite' vervielfachen,
usw. bis ich folgende liste bekäme:

Code: Alles auswählen

ergebnis = [a,a,b,b,b,c,c,c,c,d,d,d,d,d]
freu mich sehr über eure hilfe,
danke schon mal,
micha

Verfasst: Freitag 23. März 2007, 20:07
von EyDu
Wie sieht denn dein bisheriger Ansatz aus :D ?

Verfasst: Freitag 23. März 2007, 20:10
von rayo
Hi

So kannst du das lösen:

Code: Alles auswählen

l = ['a','b','c']
l2 = [1, 4, 2]
from itertools import izip

res = []
for count, value in izip(l2, l):
    res.extend( count*[value] )
print res
Gruss

Verfasst: Freitag 23. März 2007, 20:18
von drewsilson
nunja, bin hier ehrlich gesagt am verzweifeln, bin auch noch frischer anfänger und war mit so einem problem noch nicht konfrontiert.(mein python-buch gibt da auch nix her). mit den üblichen list.methods wie insert, extend usw. komme ich irgendwie nicht weiter. obwohl so etwas wie

Code: Alles auswählen

for i in range(len(zweite)):
   erste.insert(erste[i]*zweite[i])


sehr praktisch wäre. Geht nur leider nicht. Aber es muss doch was vergleichbares geben, oder?

Verfasst: Freitag 23. März 2007, 20:21
von drewsilson
spitze! wieder was gelernt,

cheers und danke
micha :D

Verfasst: Freitag 23. März 2007, 20:21
von Leonidas
drewsilson hat geschrieben:sehr praktisch wäre. Geht nur leider nicht. Aber es muss doch was vergleichbares geben, oder?
Ja, ``zip`` und ``izip``, wie rayo bereits demonstriert hat. Ob das eine gute Idee war, dass er dir gleich den kompletten Code gegeben hat ist eine andere Sache. Der lerneffekt ist größer, wenn du selbst drauf gekommen wärest. Naja, egal. Wenn du Fragen zu rayos Code hast, kannst du sie aber immer stellen.