2013-09-02 15 views
9

AKTUALIZACJA:Python: Podziel listę do podlist podstawie indeksu zakresów

W Pythonie jak mogę podzielić listę na podlist na podstawie wskaźnika waha

np Oryginalna lista:

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

użyciem indeksu wynosi 0 - 4:

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

użyciem indeksu wynosi 5-9:

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

dzięki!

Znałem już (zmienne) indeksy elementów listy, które zawierają określony ciąg i chcę podzielić listę na podstawie tych wartości indeksu.

Należy również podzielić na zmienną liczbę podlist. tj:

list1a 
list1b 
. 
. 
list1[x] 
+3

'list1a = lista1 [0: 5]'. Nazywa się to krojeniem. – rlms

Odpowiedz

6

pamiętać, że można użyć zmienna w plasterek:

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

To byłoby umieścić dwie pierwsze pozycje L w l2

+0

Właściwie to umieściłoby pierwsze 2 elementy l w l2. Indeks "c" wynosi 2, a indeks końcowy na liście Pythona, taki jak ten, nie jest zawarty w zwracanej liście wyników. – josiah

+1

Dzięki, naprawiłem to. –

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

dzięki! ale co jeśli indeks jest zmienną/nieznany – 2one

+0

to na jakiej podstawie chcesz podzielić? podzielić na dwie połówki? – no1

+0

obie zmienne. na podstawie indeksu elementu listy zawierającego określony ciąg, który również jest zmienny. tj. indeks elementów dzielących się jest zmienny – 2one

11

W python, nazywa krojenia. Oto przykład z 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'] 

Uwaga jak można kroić albo pozytywnie albo negatywnie. Kiedy dodajesz liczbę ujemną, oznacza to, że kroimy od prawej do lewej.

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

mam nadzieję, że tego właśnie szukasz! – no1

+0

Nie zastępuj wbudowanej "listy". Ponadto, 'list.index' znajduje tylko pierwsze wystąpienie. – TerryA

+0

edytowane! Dziękuję Ci! – no1

2

Jeśli już wiesz, indeksy:

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] 

Należy pamiętać, że jesteśmy dodając +1 do końca, aby zakres integracyjnego ...

Powiązane problemy