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

Liste teilen?

Beitragvon keboo » Donnerstag 23. Februar 2006, 16:08

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])

Beitragvon mawe » Donnerstag 23. Februar 2006, 16:49

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Liste teilen?

Beitragvon gerold » Donnerstag 23. Februar 2006, 16:49

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 23. Februar 2006, 16:54

...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.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Donnerstag 23. Februar 2006, 19:03

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

Beitragvon keboo » Donnerstag 23. Februar 2006, 21:39

Danke Leute für eure Antworten!

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

Beitragvon keboo » Freitag 24. Februar 2006, 09:58

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

Beitragvon Francesco » Freitag 24. Februar 2006, 10:05

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

Beitragvon keboo » Freitag 24. Februar 2006, 10:14

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:

Beitragvon Kompottkin » Sonntag 26. Februar 2006, 03:21

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]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder