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?
Auswahl einzelner bestimmter Elemente einer List
@smith0815: Wenn Du nicht sagst, nach welchem Kriterium die Elemente ausgewählt werden sollen, kann man Dir nicht helfen.
Von 1, 4, 7 und 9 ist genau eine Zahl durch zwei teilbarsmith0815 hat geschrieben:es gibt kein Kriterium in dem Sinne (nur Zahlen die durch 2 teilbar sind)
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.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
Das Leben ist wie ein Tennisball.
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]
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))
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))
@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.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]
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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]
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte