2013-09-02 26 views
9

AKTUALISIERT:Python: Split eine Liste in Unterlisten basierend auf Indexbereiche

In Python, wie kann geteilt ich eine Liste in Unterlisten basierend auf Index reicht

z.B. Original-Liste:

list1 = [x,y,z,a,b,c,d,e,f,g] 

Index mit Bereiche 0-4:

list1a = [x,y,z,a,b] 

mit Index reicht 5-9:

list1b = [c,d,e,f,g] 

Dank!

Ich kannte bereits die (variablen) Indizes von Listenelementen, die einen bestimmten String enthalten und die Liste basierend auf diesen Indexwerten aufteilen möchten.

Auch müssen in variable Anzahl von Unterlisten aufgeteilt werden! das heißt:

list1a 
list1b 
. 
. 
list1[x] 
+3

'list1a = list1 [0: 5]'. Dies wird als Schneiden bezeichnet. – rlms

Antwort

6

Beachten Sie, dass Sie ein verwenden können Variable in einer Scheibe:

l = ['a',' b',' c',' d',' e'] 
c_index = l.index("c") 
l2 = l[:c_index] 

Dies würde die ersten beiden Einträge in der l l2

setzen
+0

Eigentlich würde dies die ersten 2 Elemente von l in l2 einfügen. Der Index von 'c' ist 2, und der Endindex in der Python-Listenspleißung ist nicht in der Ergebnisliste enthalten. – josiah

+1

Danke, repariere es. –

2
list1a=list[:5] 
list1b=list[5:] 
+0

danke! aber was ist, wenn der Index eine Variable/unbekannt ist – 2one

+0

dann auf welcher Grundlage wollen Sie aufteilen? in zwei Hälften geteilt? – no1

+0

beide Variablen. basierend auf dem Index des Listenelements, das eine bestimmte Zeichenfolge enthält, die ebenfalls variabel ist. d. h. Splitting-Element-Index sind Variable – 2one

11

In Python, es Slicing bezeichnet. Hier ist ein Beispiel für python's slice notation:

>>> list1 = ['a','b','c','d','e','f','g','h', 'i', 'j'] 
>>> print list1[:5] 
['a', 'b', 'c', 'd', 'e'] 
>>> print list1[-5:] 
['f', 'g', 'h', 'i', 'j'] 

Hinweis, wie Sie entweder positiv oder negativ in Scheiben schneiden können. Wenn Sie eine negative Zahl hinzufügen, bedeutet das, dass wir von rechts nach links schneiden.

2
list1=['x','y','z','a','b','c','d','e','f','g'] 
find=raw_input("Enter string to be found") 
l=list1.index(find) 
list1a=[:l] 
list1b=[l:] 
+0

hoffe das ist was du suchst! – no1

+0

Überschreiben Sie nicht die eingebaute 'liste'. Außerdem findet 'list.index' nur das erste Vorkommen. – TerryA

+0

bearbeitet! Danke! – no1

2

Wenn Sie wissen bereits die Indizes:

list1 = ['x','y','z','a','b','c','d','e','f','g'] 
indices = [(0, 4), (5, 9)] 
print [list1[s:e+1] for s,e in indices] 

Bitte beachte, dass wir +1 bis zum Ende sind Hinzufügen der Bereich integrativer zu gestalten ...

Verwandte Themen