Seite 1 von 1

Anfängerfragen zu Listen: Nächstes Element

Verfasst: Freitag 7. Mai 2021, 16:43
von maow
Hallo ich bin Pythonanfänger und habe folgendes Problem:

Gegeben sei eine Liste mit strings A=[1,2,3,5,6,M,-,100,t,e,s,t]

Ziel:
Es soll der Teil vor dem ersten Buchstabe in der Liste in eine Liste abgelegt werden. Der Rest soll in eine andere Liste abgelegt werden. Ich scheiter leider schon bei dem ersten Teil. Nämlich soll das Zählen zunächst erstmal ab einem gewissen Fortschritt unterbrochen werden.

Lösung/Ideen:

Vermutlich könnt ihr das super schnell lösen. Ich hab aber als (ziemlich sehr^10 blutiger) Anfänger damit ziemliche Probleme :( Gleich bei mehreren Dingen, hier mal ein Codeschnipsel:

Code: Alles auswählen

A=['1','2','3','5','6','M','-','100','t','e','s','t']
liste_B=[]
for i in A:
            if i.isdigit():
                liste_B.append(i)
                
Es wird also in die Liste A immer dann eine Zahl geschrieben, wenn diese in der Liste A ist. Leider entspricht das nicht dem Ziel, denn er soll ja nach der Zahl 6 aufhören (ich hab an der Stelle natürlich dann mit elif weitergeschrieben, aber das klappt alles bisher nicht)

Gleich eine Frage zu dem Code vorweg: Kann ich mir das A=[] nicht irgendwie sparen ?

Es müsste also noch eine Abbruchbedingung dazu kommen oder aber "wenn das nächste Element ein Buchstabe ist". Dachte da an sowas hier (geht natürlich nicht, da Anfänger ^^). Ich vermute mal das i+1 schlichtweg falsch ist oder ?

Code: Alles auswählen

A=['1','2','3','5','6','M','-','100','t','e','s','t']
liste_A=[]
for i in A:
            if i.isdigit() and (i+1).isalpha()==False:  # bzw. (i+1).isdigit()==True
                A.append(i)
            else:
               break
                

Re: Anfängerfragen zu Listen: Nächstes Element

Verfasst: Freitag 7. Mai 2021, 16:57
von maow
Oh ich glaub ich habs eben selbst gelöst :mrgreen: .. juhu Newbieglücksmoment :D:

Code: Alles auswählen

        for i in A:
            if i.isdigit():
               liste_B.append(i)
            else:
                break
Aber da kommt ja noch mehr :( Wie würde ich das denn audrücken mit dem nächsten Element? Also wenn ich sage i+1?

Re: Anfängerfragen zu Listen: Nächstes Element

Verfasst: Freitag 7. Mai 2021, 17:58
von __blackjack__

Code: Alles auswählen

In [29]: list(more_itertools.split_before(A, lambda s: not s.isdigit(), 1))     
Out[29]: [['1', '2', '3', '5', '6'], ['M', '-', '100', 't', 'e', 's', 't']]