A Byte of Python

Seqüències

Com a exemples de seqüències, coneixem ja les llistes, les tuples i els strings. Però, què són les seqüències i que tenen d'especial? Dues de les característiques principals de les seqüències és l'operació d'indexació, que ens permet accedir directament a un element determinat dins la seqüència, i l'operació de segmentació (o slicing), que ens permet recuperar un segment o part de la seqüència.

Ús de les seqüències

Example 9.5. Ús de les seqüències

				
#!/usr/bin/python
# Filename: seq.py

shoplist = ['apple', 'mango', 'carrot', 'banana']

# Operació d'indexació
print 'Item 0 is', shoplist[0]
print 'Item 1 is', shoplist[1]
print 'Item 2 is', shoplist[2]
print 'Item 3 is', shoplist[3]
print 'Item -1 is', shoplist[-1]
print 'Item -2 is', shoplist[-2]

# Segmentant una llista
print 'Item 1 to 3 is', shoplist[1:3]
print 'Item 2 to end is', shoplist[2:]
print 'Item 1 to -1 is', shoplist[1:-1]
print 'Item start to end is', shoplist[:]

# Segmentant un string
name = 'swaroop'
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]
				
				

Sortida

				
$ python seq.py
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is ['mango', 'carrot']
Item 2 to end is ['carrot', 'banana']
Item 1 to -1 is ['mango', 'carrot']
Item start to end is ['apple', 'mango', 'carrot', 'banana']
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
				
				

Com funciona

Primer veiem com es fan servir els índexs per a obtenir elements individuals de la seqüència. Cada cop que especifiquem un número entre claudàtors respecte a una seqüència - com mostra l'exemple - Python localitza l'element que es troba a la posició indicada pel número dins la seqüència. Recordem que Python comença a comptar des del 0. Així: shoplist[0] es refereix al primer element, mentre que shoplist[3] és refereix al quart element de la seqüència shoplist.

L'índex també pot ser un número negatiu. En aquest cas, la posició és calculada des del final de la seqüència. Així, shoplist[-1] es refereix al darrer element de la seqüència i shoplist[-2] indica el penúltim.

Per a fer servir l'operació de segmentació cal especificar el nom de la seqüència, seguit opcionalment per un parell de nombres separats per dos punts :. Es tracta d'una notació molt similar a la de l'operació d'indexació que hem fet servir fins ara. Hem de tenir present que els nombres són opcionals, però els dos punts és requerit.

El primer número (abans dels dos punts) a l'operació de segmentació es refereix a la posició des de la que el segment comença, mentre que el segon número (després dels dos punts) indica on finalitza el segment. Si el primer número no s'especifica, el segment començarà a l'inici de la seqüència. Si el segon número no s'especifica, el segment acabarà al final del string. Notem que el segment retornat comença a la posició d'inici, i acaba justament abans de la posició final. És a dir, la posició d'inici s'inclou al segment, mentre que la final no.

D'aquesta manera, shoplist[1:3] retorna un segment de la seqüència que comença a la posició 1, inclou la posició 2 però finalitza a la posició 3, i es retorna un segment. shoplist[:] per la seva banda, retorna una còpia de tota la seqüència.

També es poden segmentar amb posicions negatives. Els números negatius permeten especificar posicions des del final de la seqüència. Per exemple, shoplist[:-1] nos retorna un segment de la seqüència que inclou tots els elements d'aquesta menys el darrer element.

Practiquem amb diferents combinacions de les especificacions de segments des de l'intèrpret de Python. El millor de tot sobre les seqüències de Python és que es pot accedir de la mateixa manera a tuples, strings i llistes.