Seite 1 von 1

Liste teilen?

Verfasst: Donnerstag 23. Februar 2006, 16:08
von keboo
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

Verfasst: Donnerstag 23. Februar 2006, 16:49
von mawe
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

Re: Liste teilen?

Verfasst: Donnerstag 23. Februar 2006, 16:49
von gerold
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
:-)

Verfasst: Donnerstag 23. Februar 2006, 16:54
von gerold
...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
:-)

Verfasst: Donnerstag 23. Februar 2006, 19:03
von mitsuhiko
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]

Verfasst: Donnerstag 23. Februar 2006, 21:39
von keboo
Danke Leute für eure Antworten!

Lg
Johannes

Verfasst: Freitag 24. Februar 2006, 09:58
von keboo
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

Verfasst: Freitag 24. Februar 2006, 10:05
von Francesco
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]


Verfasst: Freitag 24. Februar 2006, 10:14
von keboo
Danke für die zielführende Antwort!

LG
Johannes 8)

Verfasst: Sonntag 26. Februar 2006, 03:21
von Kompottkin
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]