Vous êtes sur la page 1sur 13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

6.Estructurasdedatos
Estecaptulodescribealgunascosasqueyaaprendisteenmsdetalle,yagregaalgunascosas
nuevastambin.

6.1.Mssobrelistas
Eltipodedatolistatienealgunosmtodosms.Aquestntodoslosmtodosdelosobjetoslista:
list.append(x)
Agregauntemalfinaldelalista.Equivalea a[len(a):]=[x].
list.extend(L)
Extiendelalistaagregndoletodoslostemsdelalistadada.Equivalea a[len(a):]=L.
list.insert(i,x)
Insertauntemenunaposicindada.Elprimerargumentoeselndicedeltemdelantedelcualse
insertar,porlotanto a.insert(0,x)insertaalprincipiodelalista,y a.insert(len(a),x)
equivalea a.append(x).
list.remove(x)
Quitaelprimertemdelalistacuyovalorseax.Esunerrorsinoexistetaltem.
list.pop([i])
Quitaeltemenlaposicindadadelalista,ylodevuelve.Sinoseespecificaunndice, a.pop()
quitaydevuelveelltimotemdelalista.(Loscorchetesqueencierranaienlafirmadelmtodo
denotanqueelparmetroesopcional,noquedeberasescribircorchetesenesaposicin.Versesta
notacinconfrecuenciaenlaReferenciadelaBibliotecadePython.)
list.clear()
Quitatodosloselementosdelalista.Equivalentea dela[:].
list.index(x)
Devuelveelndiceenlalistadelprimertemcuyovalorseax.Esunerrorsinoexistetaltem.
list.count(x)
Devuelveelnmerodevecesquexapareceenlalista.
list.sort()
Ordenalostemsdelalistainsitu.
http://docs.python.org.ar/tutorial/3/datastructures.html

1/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

list.reverse()
Invierteloselementosdelalistainsitu.
list.copy()
Devuelveunacopiasuperficialdelalista.Equivalentea a[:].
Unejemploqueusalamayoradelosmtodosdelista:
>>>a=[66.25,333,333,1,1234.5]
>>>print(a.count(333),a.count(66.25),a.count('x'))
210
>>>a.insert(2,1)
>>>a.append(333)
>>>a
[66.25,333,1,333,1,1234.5,333]
>>>a.index(333)
1
>>>a.remove(333)
>>>a
[66.25,1,333,1,1234.5,333]
>>>a.reverse()
>>>a
[333,1234.5,1,333,1,66.25]
>>>a.sort()
>>>a
[1,1,66.25,333,333,1234.5]
>>>a.pop()
1234.5
>>>a
[1,1,66.25,333,333]

Quizshayasnotadoquemtodoscomo insert, removeo sort,quesolomodificanalalista,no


tienenimpresounvalorderetornodevuelvenNone.[1]Estoesunprincipiodediseoparatodaslas
estructurasdedatosmutablesenPython.

6.1.1.Usandolistascomopilas
Losmtodosdelistahacenqueresultemuyfcilusarunalistacomounapila,dondeelltimo
elementoaadidoeselprimerelementoretirado(ltimoenentrar,primeroensalir).Paraagregarun
temalacimadelapila,useappend().Pararetiraruntemdelacimadelapila,usepop()sinun
ndiceexplcito.Porejemplo:

http://docs.python.org.ar/tutorial/3/datastructures.html

2/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>stack=[3,4,5]
>>>stack.append(6)
>>>stack.append(7)
>>>stack
[3,4,5,6,7]
>>>stack.pop()
7
>>>stack
[3,4,5,6]
>>>stack.pop()
6
>>>stack.pop()
5
>>>stack
[3,4]

6.1.2.Usandolistascomocolas
Tambinesposibleusarunalistacomounacola,dondeelprimerelementoaadidoeselprimer
elementoretirado(primeroenentrar,primeroensalir)sinembargo,laslistasnosoneficientespara
estepropsito.Agregarysacardelfinaldelalistaesrpido,peroinsertarosacardelcomienzodeuna
listaeslento(porquetodoslosotroselementostienenqueserdesplazadosporuno).
Paraimplementarunacola,uscollections.dequeelcualfuediseadoparaagregarysacarde
ambaspuntasdeformarpida.Porejemplo:
>>>fromcollectionsimportdeque
>>>queue=deque(["Eric","John","Michael"])
>>>queue.append("Terry")#llegaTerry
>>>queue.append("Graham")#llegaGraham
>>>queue.popleft()#elprimeroenllegarahoraseva
'Eric'
>>>queue.popleft()#elsegundoenllegarahoraseva
'John'
>>>queue#elrestodelacolaenrdendellegada
['Michael','Terry','Graham']

6.1.3.Comprensindelistas
Lascomprensionesdelistasofrecenunamaneraconcisadecrearlistas.Sususoscomunessonpara
hacernuevaslistasdondecadaelementoeselresultadodealgunasoperacionesaplicadasacada
miembrodeotrasecuenciaoiterable,oparacrearunasubsecuenciadeesoselementospara
satisfacerunacondicindeterminada.
Porejemplo,asumamosquequeremoscrearunalistadecuadrados,como:

http://docs.python.org.ar/tutorial/3/datastructures.html

3/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>cuadrados=[]
>>>forxinrange(10):
...cuadrados.append(x**2)
...
>>>cuadrados
[0,1,4,9,16,25,36,49,64,81]

Podemosobtenerelmismoresultadocon:
cuadrados=[x**2forxinrange(10)]

Estoesequivalentetambina squares=list(map(lambdax:x**2,range(10)))peroesms
concisoylegible.
Unalistadecomprensinconsistedecorchetesrodeandounaexpresinseguidadeladeclaracin
for(reference.html#for)yluegoceroomsdeclaracionesfor(reference.html#for)oif
(reference.html#if).Elresultadoserunanuevalistaquesaledeevaluarlaexpresinenelcontextode
losfor(reference.html#for)oif(reference.html#if)quelesiguen.Porejemplo,estalistade
comprensincombinaloselementosdedoslistassinosoniguales:
>>>[(x,y)forxin[1,2,3]foryin[3,1,4]ifx!=y]
[(1,3),(1,4),(2,3),(2,1),(2,4),(3,1),(3,4)]

yesequivalentea:
>>>combs=[]
>>>forxin[1,2,3]:
...foryin[3,1,4]:
...ifx!=y:
...combs.append((x,y))
...
>>>combs
[(1,3),(1,4),(2,3),(2,1),(2,4),(3,1),(3,4)]

Notcomoelordendelosfor(reference.html#for)yif(reference.html#if)eselmismoenambos
pedacitosdecdigo.
Silaexpresinesunatupla(comoel (x,y)enelejemploanterior),debeestarentreparntesis.

http://docs.python.org.ar/tutorial/3/datastructures.html

4/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>vec=[4,2,0,2,4]
>>>#crearunanuevalistaconlosvaloresduplicados
>>>[x*2forxinvec]
[8,4,0,4,8]
>>>#filtrarlalistaparaexcluirnmerosnegativos
>>>[xforxinvecifx>=0]
[0,2,4]
>>>#aplicaunafuncinatodosloselementos
>>>[abs(x)forxinvec]
[4,2,0,2,4]
>>>#llamaunmtodoacadaelemento
>>>frutafresca=['banana','moradeLogan','maracuya']
>>>[arma.strip()forarmainfrutafresca]
['banana','moradeLogan','maracuya']
>>>#creaunalistadetuplasdedoscomo(nmero,cuadrado)
>>>[(x,x**2)forxinrange(6)]
[(0,0),(1,1),(2,4),(3,9),(4,16),(5,25)]
>>>#latupladebeestarentreparntesis,sinoesunerror
>>>[x,x**2forxinrange(6)]
Traceback(mostrecentcalllast):
...
[x,x**2forxinrange(6)]
^
SyntaxError:invalidsyntax
>>>#aplanarunalistausandocomprensindelistascondos'for'
>>>vec=[[1,2,3],[4,5,6],[7,8,9]]
>>>[numforeleminvecfornuminelem]
[1,2,3,4,5,6,7,8,9]

Lascomprensionesdelistaspuedencontenerexpresionescomplejasyfuncionesanidadas:
>>>frommathimportpi
>>>[str(round(pi,i))foriinrange(1,6)]
['3.1','3.14','3.142','3.1416','3.14159']

6.1.4.Listasporcomprensinanidadas
Laexpresininicialdeunacomprensindelistaspuedesercualquierexpresinarbitraria,incluyendo
otracomprensindelistas.
Considerelsiguienteejemplodeunamatrizde3x4implementadacomounalistadetreslistasde
largo4:
>>>matriz=[
...[1,2,3,4],
...[5,6,7,8],
...[9,10,11,12],
...]

Lasiguientecomprensindelistatranspondrlasfilasycolumnas:

http://docs.python.org.ar/tutorial/3/datastructures.html

5/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>[[fila[i]forfilainmatriz]foriinrange(4)]
[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]

Comovimosenlaseccinanterior,lalistadecomprensinanidadaseevaluaenelcontextodelfor
(reference.html#for)quelosigue,porloqueesteejemploequivalea:
>>>transpuesta=[]
>>>foriinrange(4):
...transpuesta.append([fila[i]forfilainmatriz])
...
>>>transpuesta
[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]

elcual,alavez,eslomismoque:
>>>transpuesta=[]
>>>foriinrange(4):
...#lassiguientes3lineashacenlacomprensindelistasanidada
...fila_transpuesta=[]
...forfilainmatriz:
...fila_transpuesta.append(fila[i])
...transpuesta.append(fila_transpuesta)
...
>>>transpuesta
[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]

Enelmundoreal,deberaspreferirfuncionespredefinidasadeclaracionesconflujocomplejo.La
funcinzip()haraunbuentrabajoparaestecasodeuso:
>>>list(zip(*matriz))
[(1,5,9),(2,6,10),(3,7,11),(4,8,12)]

VerDesempaquetandounalistadeargumentos(controlflow.html#tutunpackingarguments)para
detallesenelasteriscodeestalnea.

6.2.Lainstruccindel(reference.html#del)
Hayunamaneradequitaruntemdeunalistadadosundiceenlugardesuvalor:lainstruccindel
(reference.html#del).Estaesdiferentedelmtodopop(),elcualdevuelveunvalor.Lainstruccindel
(reference.html#del)tambinpuedeusarseparaquitarseccionesdeunalistaovaciarlalistacompleta
(loquehacamosantesasignandounalistavacaalaseccin).Porejemplo:

http://docs.python.org.ar/tutorial/3/datastructures.html

6/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>a=[1,1,66.25,333,333,1234.5]
>>>dela[0]
>>>a
[1,66.25,333,333,1234.5]
>>>dela[2:4]
>>>a
[1,66.25,1234.5]
>>>dela[:]
>>>a
[]

del(reference.html#del)puedeusarsetambinparaeliminarvariables:
>>>dela

Hacerreferenciaalnombre adeaquenmsesunerror(almenoshastaqueseleasigneotrovalor).
Veremosotrosusosparadel(reference.html#del)msadelante.

6.3.Tuplasysecuencias
Vimosquelaslistasycadenastienenpropiedadesencomn,comoelindizadoylasoperacionesde
seccionado.Estassondosejemplosdedatosdetiposecuencia(verTiposintegrados
(reference.html#typesseq)).ComoPythonesunlenguajeenevolucin,otrosdatosdetiposecuencia
puedenagregarse.Existeotrodatodetiposecuenciaestndar:latupla.
Unatuplaconsistedeunnmerodevaloresseparadosporcomas,porejemplo:
>>>t=12345,54321,'hola!'
>>>t[0]
12345
>>>t
(12345,54321,'hola!')
>>>#Lastuplaspuedenanidarse:
...u=t,(1,2,3,4,5)
>>>u
((12345,54321,'hola!'),(1,2,3,4,5))
>>>#Lastuplassoninmutables:
...t[0]=88888
Traceback(mostrecentcalllast):
File"<stdin>",line1,in<module>
TypeError:'tuple'objectdoesnotsupportitemassignment
>>>#peropuedencontenerobjetosmutables:
...v=([1,2,3],[3,2,1])
>>>v
([1,2,3],[3,2,1])

Comopuedesver,enlasalidalastuplassiempreseencierranentreparntesis,paraquelastuplas
anidadaspuedaninterpretarsecorrectamentepuedeningresarseconosinparntesis,aunquea
menudolosparntesissonnecesariosdetodasformas(silatuplaespartedeunaexpresinms
grande).Noesposibleasignaralostemsindividualesdeunatupla,perosinembargossepuede
creartuplasquecontenganobjetosmutables,comolaslistas.
http://docs.python.org.ar/tutorial/3/datastructures.html

7/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

Apesardequelastuplaspuedanparecersealaslistas,frecuentementeseutilizanendistintas
situacionesyparadistintospropsitos.Lastuplassoninmutablesynormalmentecontienenuna
secuenciaheterogneadeelementosquesonaccedidosaldesempaquetar(vermsadelanteenesta
seccin)oindizar(oinclusoaccederporatributoenelcasodelasnamedtuples).Laslistasson
mutables,ysuselementossonnormalmentehomogneosyseaccedeniterandoalalista.
Unproblemaparticulareslaconstruccindetuplasquecontengan0o1tem:lasintaxispresenta
algunaspeculiaridadesparaestoscasos.Lastuplasvacasseconstruyenmedianteunparde
parntesisvacounatuplaconuntemseconstruyeponiendounacomaacontinuacindelvalor(no
alcanzaconencerrarunnicovalorentreparntesis).Feo,peroefectivo.Porejemplo:
>>>vacia=()
>>>singleton='hola',#<notarlacomaalfinal
>>>len(vacia)
0
>>>len(singleton)
1
>>>singleton
('hola',)

Ladeclaracin t=12345,54321,'hola!'esunejemplodeempaquetadodetuplas:losvalores
12345, 54321y 'hola!'seempaquetanjuntosenunatupla.

Laoperacininversatambinesposible:
>>>x,y,z=t

Estosellama,apropiadamente,desempaquetadodesecuencias,yfuncionaparacualquiersecuencia
enelladoderechodeligual.Eldesempaquetadodesecuenciasrequierequelacantidaddevariablesa
laizquierdadelsignoigualseaeltamaodelasecuencia.Notquelaasignacinmltipleesen
realidadslounacombinacindeempaquetadodetuplasydesempaquetadodesecuencias.

6.4.Conjuntos
Pythontambinincluyeuntipodedatoparaconjuntos.Unconjuntoesunacoleccinnoordenadaysin
elementosrepetidos.Losusosbsicosdestosincluyenverificacindepertenenciayeliminacinde
entradasduplicadas.Losconjuntostambinsoportanoperacionesmatemticascomolaunin,
interseccin,diferencia,ydiferenciasimtrica.
Lasllavesolafuncinset()puedenusarseparacrearconjuntos.Notqueparacrearunconjunto
vacotensqueusar set(),no {}estoltimocreaundiccionariovaco,unaestructuradedatos
quediscutiremosenlaseccinsiguiente.
Unapequeademostracin:

http://docs.python.org.ar/tutorial/3/datastructures.html

8/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>canasta={'manzana','naranja','manzana','pera','naranja','banana'}
>>>printfruta#muestraqueseremovieronlosduplicados
{'pera','manzana','banana','naranja'}
>>>'naranja'incanasta#verificacindepertenenciarpida
True
>>>'yerba'incanasta
False
>>>#veamoslasoperacionesparalasletrasnicasdedospalabras
...
>>>a=set('abracadabra')
>>>b=set('alacazam')
>>>a#letrasnicasena
{a','r','b','c','d'}
>>>ab#letrasenaperonoenb
{'r','b','d'}
>>>a|b#letrasenaoenb
{'a','c','b','d','m','l','r','z'}
>>>a&b#letrasenayenb
{'a','c'}
>>>a^b#letrasenaobperonoenambos
{'b','d','m','l','r','z'}

Deformasimilaralascomprensionesdelistas,esttambinsoportadalacomprensindeconjuntos:
>>>a={xforxin'abracadabra'ifxnotin'abc'}
>>>a
{'r','d'}

6.5.Diccionarios
OtrotipodedatotilincludoenPythoneseldiccionario(verTiposintegrados
(reference.html#typesmapping)).Losdiccionariosseencuentranavecesenotroslenguajescomo
memoriasasociativasoarreglosasociativos.Adiferenciadelassecuencias,queseindexan
medianteunrangonumrico,losdiccionariosseindexanconclaves,quepuedensercualquiertipo
inmutablelascadenasynmerossiemprepuedenserclaves.Lastuplaspuedenusarsecomoclaves
sisolamentecontienencadenas,nmerosotuplassiunatuplacontienecualquierobjetomutable
directaoindirectamente,nopuedeusarsecomoclave.Nopodsusarlistascomoclaves,yaquelas
listaspuedenmodificarseusandoasignacinporndice,asignacinporseccin,omtodoscomo
append()yextend().
Lomejorespensarenundiccionariocomounconjuntonoordenadodeparesclave:valor,conel
requerimientodequelasclavesseannicas(dentrodeundiccionarioenparticular).Unpardellaves
creanundiccionariovaco: {}.Colocarunalistadeparesclave:valorseparadosporcomasentrelas
llavesaadeparesclave:valorinicialesaldiccionarioestatambineslaformaenquelosdiccionarios
sepresentanenlasalida.
Lasoperacionesprincipalessobreundiccionariosonguardarunvalorconunaclaveyextraerese
valordadalaclave.Tambinesposibleborrarunparclave:valorcon del.Siussunaclavequeya
estenusoparaguardarunvalor,elvalorqueestabaasociadoconesaclavesepierde.Esunerror
extraerunvalorusandounaclavenoexistente.
http://docs.python.org.ar/tutorial/3/datastructures.html

9/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

Hacer list(d.keys())enundiccionariodevuelveunalistadetodaslasclavesusadasenel
diccionario,enunordenarbitrario(silasquersordenadas,usencambio sorted(d.keys()).[2]
Paracontrolarsiunaclaveesteneldiccionario,uselin(reference.html#in).
Unpequeoejemplodeusodeundiccionario:
>>>tel={'jack':4098,'sape':4139}
>>>tel['guido']=4127
>>>tel
{'sape':4139,'jack':4098,'guido':4127}
>>>tel['jack']
4098
>>>deltel['sape']
>>>tel['irv']=4127
>>>tel
{'jack':4098,'irv':4127,'guido':4127}
>>>list(tel.keys())
['irv','guido','jack']
>>>sorted(tel.keys())
['guido','irv','jack']
>>>'guido'intel
True
>>>'jack'notintel
False

Elconstructordict()creaundiccionariodirectamentedesdesecuenciasdeparesclavevalor:
>>>dict([('sape',4139),('guido',4127),('jack',4098)])
{'sape':4139,'jack':4098,'guido':4127}

Adems,lascomprensionesdediccionariossepuedenusarparacreardiccionariosdesdeexpresiones
arbitrariasdeclaveyvalor:
>>>{x:x**2forxin(2,4,6)}
{2:4,4:16,6:36}

Cuandolasclavessoncadenassimples,avecesresultamsfcilespecificarlosparesusando
argumentosporpalabraclave:
>>>dict(sape=4139,guido=4127,jack=4098)
{'sape':4139,'jack':4098,'guido':4127}

6.6.Tcnicasdeiteracin
Cuandoiteramossobrediccionarios,sepuedenobteneralmismotiempolaclaveysuvalor
correspondienteusandoelmtodoitems().

http://docs.python.org.ar/tutorial/3/datastructures.html

10/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>caballeros={'gallahad':'elpuro','robin':'elvaliente'}
>>>fork,vincaballeros.items():
...print(k,v)
...
gallahadelpuro
robinelvaliente

Cuandoseiterasobreunasecuencia,sepuedeobtenerelndicedeposicinjuntoasuvalor
correspondienteusandolafuncinenumerate().
>>>fori,vinenumerate(['ta','te','ti']):
...print(i,v)
...
0ta
1te
2ti

Paraiterarsobredosomssecuenciasalmismotiempo,losvalorespuedenemparejarseconla
funcinzip().
>>>preguntas=['nombre','objetivo','colorfavorito']
>>>respuestas=['lancelot','elsantogrial','azul']
>>>forp,rinzip(preguntas,respuestas):
...print('Cualestu{0}?{1}.'.format(p,r))
...
Cualestunombre?lancelot.
Cualestuobjetivo?elsantogrial.
Cualestucolorfavorito?azul.

Paraiterarsobreunasecuenciaenordeninverso,seespecificaprimerolasecuenciaalderechoy
luegosellamaalafuncinreversed().
>>>foriinreversed(range(1,10,2)):
...print(i)
...
9
7
5
3
1

Paraiterarsobreunasecuenciaordenada,seutilizalafuncinsorted()lacualdevuelveunanueva
listaordenadadejandoalaoriginalintacta.

http://docs.python.org.ar/tutorial/3/datastructures.html

11/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>canasta=['manzana','naranja','manzana','pera','naranja','banana']
>>>forfinsorted(set(canasta)):
...print(f)
...
banana
manzana
naranja
pera

Paracambiarunasecuenciasobrelaqueestsiterandomientrasestsadentrodelciclo(porejemplo
paraduplicaralgunostems),serecomiendaqueprimerahagasunacopia.Ciclarsobreunasecuencia
nohaceimplcitamenteunacopia.Lanotacinderebanadasesespecialmenteconvenienteparaesto:
>>>palabras=['gato','ventana','defenestrar']
>>>forpinpalabras[:]:#ciclarsobreunacopiadelalistaentera
...iflen(p)>6:
...palabras.insert(0,p)
...
>>>palabras
['defenestrar','gato','ventana','defenestrar']

6.7.Msacercadecondiciones
Lascondicionesusadasenlasinstrucciones whilee ifpuedencontenercualquieroperador,no
slocomparaciones.
Losoperadoresdecomparacin iny notinverificansiunvalorest(onoest)enunasecuencia.
Losoperadores ise isnotcomparansidosobjetossonrealmenteelmismoobjetoestoes
significativosloparaobjetosmutablescomolaslistas.Todoslosoperadoresdecomparacintienenla
mismaprioridad,lacualesmenorqueladetodoslosoperadoresnumricos.
Lascomparacionespuedenencadenarse.Porejemplo, a<b==cverificasi aesmenorque by
ademssi besiguala c.
Lascomparacionespuedencombinarsemediantelosoperadoresbooleanos andy or,yelresultado
deunacomparacin(odecualquierotraexpresinbooleana)puedenegarsecon not.Estostienen
prioridadesmenoresquelosoperadoresdecomparacinentreellos nottienelamayorprioridady
orlamenor,oseaque AandnotBorCequivalea (Aand(notB))orC.Comosiempre,

losparntesispuedenusarseparaexpresarlacomposicindeseada.
Losoperadoresbooleanos andy orsonlosllamadosoperadorescortocircuito:susargumentosse
evalandeizquierdaaderecha,ylaevaluacinsedetieneenelmomentoenquesedeterminasu
resultado.Porejemplo,si Ay Csonverdaderaspero Besfalsa,en AandBandCnoseevala
laexpresin C.Cuandoseusacomounvalorgeneralynocomounbooleano,elvalordevueltodeun
operadorcortocircuitoeselltimoargumentoevaluado.
Esposibleasignarelresultadodeunacomparacinuotraexpresinbooleanaaunavariable.Por
ejemplo,

http://docs.python.org.ar/tutorial/3/datastructures.html

12/13

19/5/2015

6. Estructuras de datos documentacin de Tutorial de Python - 3.4.2

>>>cadena1,cadena2,cadena3='','Trondheim','PasoHammer'
>>>non_nulo=cadena1orcadena2orcadena3
>>>non_nulo
'Trondheim'

NotqueenPython,adiferenciadeC,laasignacinnopuedeocurrirdentrodeexpresiones.Los
programadoresdeCpuedenrenegarporesto,peroesalgoqueevitauntipodeproblemacomn
encontradoenprogramasenC:escribir =enunaexpresincuandoloquesequiereescribires ==.

6.8.Comparandosecuenciasyotrostipos
Lassecuenciaspuedencompararseconotrosobjetosdelmismotipodesecuencia.Lacomparacin
usaordenlexicogrfico:primerosecomparanlosdosprimerostems,sisondiferentesestoya
determinaelresultadodelacomparacinsisoniguales,secomparanlossiguientesdostems,yas
sucesivamentehastallegaralfinaldealgunadelassecuencias.Sidostemsacompararsonambos
secuenciasdelmismotipo,lacomparacinlexicogrficaesrecursiva.Sitodoslostemsdedos
secuenciasresultaniguales,seconsideraquelassecuenciassoniguales.
Siunasecuenciaesunasubsecuenciainicialdelaotra,lasecuenciamscortaeslamenor.Elorden
lexicogrficoparacadenasdecaracteresutilizaelordendecdigosUnicodeparacaracteres
individuales.Algunosejemplosdecomparacionesentresecuenciasdelmismotipo:
(1,2,3)<(1,2,4)
[1,2,3]<[1,2,4]
'ABC'<'C'<'Pascal'<'Python'
(1,2,3,4)<(1,2,4)
(1,2)<(1,2,1)
(1,2,3)==(1.0,2.0,3.0)
(1,2,('aa','ab'))<(1,2,('abc','a'),4)

Observquecompararobjetosdediferentestiposcon <o >eslegalsiempreycuandolosobjetas


tengalosmtodosdecomparacinapropiados.Porejemplo,lostiposdenmerosmezcladosson
comparadosdeacuerdoasuvalornumrico,osea0esiguala0.0,etc.Sinoeselcaso,enlugarde
proveerunordenamientoarbitrario,elintrpretegenerarunaexcepcinTypeError.
Footnotes
[1]

Otroslenguajespuedendevolverelobjetomutado,locualpermiteencadenadodemtodos,
como d>insert("a")>remove("b")>sort().

[2]

Llamara d.keys()devolverunobjetovistadediccionario.Soportaoperacionescomo
pruebadepertenenciaeiteracin,perosuscontenidosdependendeldiccionariooriginalson
slounavista.

Copyright2014,PythonSoftwareFoundation.
CreatedusingSphinx(http://sphinx.pocoo.org/)1.2.2.

http://docs.python.org.ar/tutorial/3/datastructures.html

Backtotop

13/13

Vous aimerez peut-être aussi