Zusätzliche Werte in eine Liste einfügen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Daniela
User
Beiträge: 73
Registriert: Donnerstag 19. Juni 2008, 07:32

Mittwoch 15. April 2009, 08:37

Hallo alle zusammen,

ich hab mal wieder ein Listenproblem.
Also über eine Funktion wird mir eine Liste mit verschiedenen Werten erstellt. Jetzt soll jedem Listeneintrag ein zustätzlicher Wert angehängt werden. Nur das Problem ist, dass dieser Wert nicht durchgängig der gleiche ist, sondern ständig wechseln muss.

Liste_1 = [(1,2), (3,4), (5,6), (7,8 ), (9,10), (11,12), (13,14), ...]
Liste_2 = [90, 270]

jetzt soll die Liste_3 so ausssehen, dass an die ersten 2 Elemente der Liste_1 das erste Element aus Liste_2 angehängt werden sollen. Quasi bei jedem ungeraden Listenindex der Liste_1 soll der Wert geändert werden und sonst einfach übernommen werden.

Liste_3 = [(1,2,90), (3,4,90), (5,6,270), (7,8,270), (9,10,90), (11,12,90), (13,14,270), ...]

Code: Alles auswählen

def liste_zusatz():

    liste_1
    liste_2
    neue_liste = []
    
    for i in liste_1:
        if ((i % 2) == 0):
            dfgh
        neue_liste.append((liste_1[i][0], liste_1[i][0], liste_2[0]))
 
    return neue_liste
Ich hatte jetzt überlegt, dass man erst einmal prüft, ob der aktuelle durchlauf einen gerader Index hat, oder nicht. Sollte er ein gerader sein, dann soll entweder der erste Wert aus Liste_2 genommen werden, oder der zweite. je nachdem welcher wert vorher genommen wurde.

Hat vielleicht jemand eine Idee??

Danke schonmal im Vorraus.

Daniela
Zuletzt geändert von Daniela am Montag 20. April 2009, 07:18, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mittwoch 15. April 2009, 09:30

Ist ungetestet, aber in etwa so sollt es laufen:

Code: Alles auswählen

import itertools

def liste_zusatz(liste_1, liste_2):
    neue_liste = []
    it = itertools.cycle(liste_2)

    for i, value in enumerate(liste_1):
        if (i % 2) == 0:
            element = it.next()

        neue_liste.append(value + (element,))
 
    return neue_liste

Edit: oder in kürzer

Code: Alles auswählen

import itertools

def liste_zusatz(liste_1, liste_2):
    it = itertools.cycle(itertools.chain(*zip(liste_2, liste_2)))

    return [value + (it.next(),) for value in liste_1]

Edit: oder

Code: Alles auswählen

import itertools

def liste_zusatz(liste_1, liste_2):
    it = itertools.cycle(itertools.chain(*zip(liste_2, liste_2)))
    return [value + (elem,) for value, elem in zip(liste_1, it)]
Das Leben ist wie ein Tennisball.
Daniela
User
Beiträge: 73
Registriert: Donnerstag 19. Juni 2008, 07:32

Montag 20. April 2009, 07:16

@EyDu,

danke für deine Antwort, ich werd mal ausprobieren, wie wie ich damit so zu rande komme.

Ich hatte mir auch schon was ähnliches überlegt, wie dein erster Vorschlag, sprich mit Modulo arbeiten.

Gruß

Daniela
Antworten