Liste teilen?

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
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Hallo!

Ich bins schon wieder.

Frage zu Listen:

Code: Alles auswählen

L=[0,1,2,4]
L1=[0,2]
L2=[1,4]
Wie funktioniert es, dass ich in einer FOR Schleife aus einer Liste zwei Listen mache. Ich will quasi, dass die Werte mit den geraden Indexen in die erste Liste kommen und die ungeraden in die zweite.

Danke für eure Hilfe! :wink:

Lg
Johannes
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Code: Alles auswählen

>>> l = [0,1,2,3,4]
>>> lg = l[::2]
>>> lu = l[1::2]
>>> lg
[0, 2, 4]
>>> lu
[1, 3]
Gruß, mawe
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

keboo hat geschrieben:Ich will quasi, dass die Werte mit den geraden Indexen in die erste Liste kommen und die ungeraden in die zweite.
Hi Johannes!

Mehrere Möglichkeiten:

Code: Alles auswählen

L = [0,1,2,4]

# Entweder so 
L1 = []
for item in L[::2]:
    L1.append(item)
L2 = []
for item in L[1::2]:
    L2.append(item)

# oder so
L1 = [ item for item in L[::2] ]
L2 = [ item for item in L[1::2] ]

# oder so
L1 = L[::2]
L2 = L[1::2]
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

...oder so:

Code: Alles auswählen

L = [0,1,2,4]

L1 = []
for i in range(0, len(L), 2):
    L1.append(L[i])
L2 = []
for i in range(1, len(L), 2):
    L2.append(L[i])
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

oder so:

Code: Alles auswählen

>>> l = range(20)
>>> gerade = []
>>> ungerade = []
>>> for pos, item in enumerate(l):
...     if pos % 2 == 0:
...             gerade.append(item)
...     else:
...             ungerade.append(item)
...
>>> gerade
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> ungerade
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
TUFKAB – the user formerly known as blackbird
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Danke Leute für eure Antworten!

Lg
Johannes
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Hallo Nochmals!

Bin gerade darauf gekommen, dass ich gestern meine Frage falsch formuliert hatte.

So sieht meine Liste aus:

Code: Alles auswählen

L=['0 60', '20 39', '30 58', '50 97', '80 146']
Mein Ziel ist es die Inhalte in 2 neue Listen aufzuspalten:

Ziel:

Code: Alles auswählen

L1=[0,20,30,50,80]
L2=[60,39,58,97,146]
Danke für eure Hilfe,

Johannes
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

keboo hat geschrieben:Hallo Nochmals!

Bin gerade darauf gekommen, dass ich gestern meine Frage falsch formuliert hatte.

So sieht meine Liste aus:

Code: Alles auswählen

L=['0 60', '20 39', '30 58', '50 97', '80 146']
Mein Ziel ist es die Inhalte in 2 neue Listen aufzuspalten:

Ziel:

Code: Alles auswählen

L1=[0,20,30,50,80]
L2=[60,39,58,97,146]
Danke für eure Hilfe,

Johannes
Ich würd es so machen:

Code: Alles auswählen

>>> L=['0 60', '20 39', '30 58', '50 97', '80 146']
>>>
>>> L1=[]
>>> L2=[]
>>> for i in L:
...     t = i.split()
...     L1.append (int (t[0]))
...     L2.append (int (t[1]))
oder

Code: Alles auswählen

>>> L=['0 60', '20 39', '30 58', '50 97', '80 146']
>>> 
>>> L1 = [int (i.split()[0]) for i in L]
>>> L2 = [int (i.split()[1]) for i in L]
>>> 
>>> L1
[0, 20, 30, 50, 80]
>>> L2
[60, 39, 58, 97, 146]

Zuletzt geändert von Francesco am Freitag 24. Februar 2006, 10:15, insgesamt 1-mal geändert.
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Danke für die zielführende Antwort!

LG
Johannes 8)
Kompottkin
User
Beiträge: 21
Registriert: Sonntag 26. Februar 2006, 03:09
Wohnort: Penzberg
Kontaktdaten:

Auch ganz hübsch ist das Folgende:

Code: Alles auswählen

l = ['0 60', '20 39', '30 58', '50 97', '80 146']
l1, l2 = zip(*[x.split() for x in l])
Kann man bei Bedarf dann natürlich noch per List Comprehension int()en:

Code: Alles auswählen

l1 = [int(x) for x in l1]
l2 = [int(x) for x in l2]
Antworten