Seite 1 von 1
Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 08:23
von smith0815
Hi
mal ne (hoffentlich) Grundlagenfrage.
Ich habe ne List mit 10 Zahlen
x = [1,2,3,4,5,6,7,8,9,0]
und möchte jetzt eine Sublist davon,
sublist = [1,4,7,9]
kann mir einer den Befehl dazu nennen?
bzw. gibt es den überhaupt oder muss ich dafür ne extra Funktion schreiben?
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 08:24
von lunar
@smith0815: Wenn Du nicht sagst, nach welchem Kriterium die Elemente ausgewählt werden sollen, kann man Dir nicht helfen.
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 08:28
von smith0815
es gibt kein Kriterium in dem Sinne (nur Zahlen die durch 2 teilbar sind)
Ich möchte eine Liste angeben mit den Feldnummer die ich haben möchte und
raus kommt eine Subliste, welche nur die gewünschten Felder enthält
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 08:31
von smith0815
oder nehmen wir ein Beispiel.
Ich möchte aus der oben genannten Liste
- die Felder 0 - exkl. 4
- Feld 6
- Feld 8
- Feld 9
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 08:32
von EyDu
smith0815 hat geschrieben:es gibt kein Kriterium in dem Sinne (nur Zahlen die durch 2 teilbar sind)
Von 1, 4, 7 und 9 ist genau eine Zahl durch zwei teilbar
smith0815 hat geschrieben:Ich möchte eine Liste angeben mit den Feldnummer die ich haben möchte und
raus kommt eine Subliste, welche nur die gewünschten Felder enthält
Dann zeige doch mal vorhandenen Code. Es ist ja nicht so schwer eine Liste mit Indizes zu schreiben und eine for-Schleife welche diese abarbeitet.
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 09:06
von Zap
Um dein erstes Beispiel aufzugreifen. Wenn du weißt welche Indizes dich interessieren, könntest du es so lösen:
Code: Alles auswählen
In [1]: x = [1,2,3,4,5,6,7,8,9,0]
In [2]: sublist = [v for (i,v) in enumerate(x) if i in [0,3,6,8]]
In [3]: sublist
Out[3]: [1, 4, 7, 9]
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 09:15
von smith0815
ich meinte ja kein Kriterium, wie nur Zahlen die durch 2 teilbar sind.
Code gibt es keinen, es sind nur Experiemente
Ich suche einfach eine einfache Möglichkeit
aus einer Liste
x = [1,2,3,4,5,6,7,8,9,0]
nur bestimmte Felder zu extrahieren ohne gleich
eine Funktion schreiben zu müssen (nicht gleich kompliziert denken)
In etwa wie
y = x[(0:4,,6,8,9)] oder
y = sublist(x, (0,1,2,3,6,8,9))
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 09:16
von smith0815
da war jemand schneller als ich
ok Danke
das ist es
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 09:17
von BlackJack
@Zap: Wenn Du eine Liste mit den Indizes hast, kannst Du auch *die* abarbeiten und nur die Elemente aus `x` holen, die Dich interessieren, statt *alle* anzuschauen und dann auch noch für jedes in linearer Zeit zu testen ob der Index überhaupt interessant ist:
Code: Alles auswählen
In [54]: xs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
In [55]: [xs[i] for i in [0, 3, 6, 8]]
Out[55]: [1, 4, 7, 9]
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 09:24
von smith0815
is ja noch besser
Danke
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 09:40
von Zap
BlackJack hat geschrieben:@Zap: Wenn Du eine Liste mit den Indizes hast, kannst Du auch *die* abarbeiten und nur die Elemente aus `x` holen, die Dich interessieren, statt *alle* anzuschauen und dann auch noch für jedes in linearer Zeit zu testen ob der Index überhaupt interessant ist:
Code: Alles auswählen
In [54]: xs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
In [55]: [xs[i] for i in [0, 3, 6, 8]]
Out[55]: [1, 4, 7, 9]

sowas einfaches wollte mir nicht einfallen.
Re: Auswahl einzelner bestimmter Elemente einer List
Verfasst: Mittwoch 13. Juli 2011, 12:02
von cofi
Damit wir filter nich vergessen - also fuer den Fall, dass es tatsaechlich ein Kriterium gibt:
Code: Alles auswählen
In [2]: filter(lambda x: x %2 == 0, range(20))
Out[2]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]