web-dev-qa-db-fra.com

Python: diviser une liste en sous-listes en fonction des plages d'index

MIS À JOUR:

En python, comment diviser une liste en sous-listes en fonction des plages d'index

par exemple. liste originale:

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

en utilisant les plages d'index 0 - 4:

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

en utilisant les plages d'index 5-9:

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

merci!

Je connaissais déjà les indices (variables) des éléments de liste qui contiennent certaines chaînes et je souhaite diviser la liste en fonction de ces valeurs d'index.

Besoin également de diviser en nombre variable de sous-listes! c'est à dire:

list1a
list1b
.
.
list1[x]
16
2one

Notez que vous pouvez utiliser une variable dans une tranche:

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

Cela mettrait les deux premières entrées de l dans l2

11
Mark R. Wilkins

En python, cela s'appelle le découpage. Voici un exemple de notation de tranche de python :

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

Notez comment vous pouvez couper positivement ou négativement. Lorsque vous ajoutez un nombre négatif, cela signifie que nous coupons de droite à gauche.

13
TerryA

Si vous connaissez déjà les indices:

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]

Notez que nous ajoutons +1 à la fin pour rendre la plage inclusive ...

6
Jon Clements
list1a=list[:5]
list1b=list[5:]
1
no1
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:]
1
no1