Revista Tecnología

Guia Python: las cadenas y las listas tratadas como objetos.

Publicado el 06 agosto 2013 por Hugo Rep @HugoRep
python logoPython es un lenguaje de script desarrollado por Guido van Rossum.
Podemos codificar empleando programación lineal, estructurada y orientada a objetos (tengamos en cuenta que esta última es la que se ha impuesto en la actualidad).
Se cuenta con intérpretes de Python en múltiples plataformas: Windows, Linux, Mac etc. Se pueden desarrollar aplicaciones de escritorio como aplicaciones web. Empresas como Google, Yahoo, Nasa etc. utilizan este lenguaje para sus desarrollos (actualmente el creador de Python Guido van Rossum trabaja para Google.)
Se puede ejecutar instrucciones de Python desde la línea de comando o creando archivos con extensión *.py. Cuando uno comienza a aprender este lenguaje la línea de comandos nos provee una retroalimentación del resultado en forma inmediata.
El objetivo de este tutorial es presentar en forma progresiva los conceptos fundamentales de este lenguaje y poder analizar los problemas resueltos y codificar los problemas propuestos en este mismo sitio, sin tener que instalar en un principio el Python en su equipo (o luego de instalado poder avanzar con el tutorial en cualquier máquina conectada a internet).
Las cadenas tratadas como objetos.
python operaciones con cadena
Ahora que hemos introducido los conceptos básicos de objetos veamos más profundo el concepto de cadenas (string) en Python.
En Python todo es un objetos, por lo que cuando definimos una cadena estamos definiendo un objeto.
Como hemos visto toda clase tiene una serie de métodos, veremos los métodos principales que tiene la clase que en Python administra una cadena.
Los métodos:
  • capitalize()
    Retorna otra cadena con el primer caracter en mayúsculas.
    cadena='ana'
    print cadena.capitalize() #Ana
    print cadena #ana

    Es importante notar que no se modifica el contenido de la variable 'cadena'. El método capitalize() retorna otra cadena con el primero en mayúsculas.

  • upper()
    Retorna otra cadena con todos los caracteres convertidos a mayúscula. cadena1='ana'
    cadena2=cadena1.upper()
    print cadena2 #ANA

  • lower()

    Retorna otra cadena con todos los caracteres convertidos a minúsculas.
    cadena1='Ana'
    cadena2=cadena1.lower()
    print cadena2 #ana

  • isupper()

    Retorna True si todos los caracteres de la cadena están en mayúsculas.
    cadena='ANA'
    if cadena.isupper():
    print 'La cadena '+cadena+' esta toda en mayusculas'

  • islower()
    Retorna True si todos los caracteres de la cadena están en minúsculas.
    cadena1='ana'
    if cadena.islower():
    print 'La cadena '+cadena+' esta toda en minusculas'

  • isdigit()
    Retorna verdadero si todos los caracteres de la cadena son dígitos.
    cadena='120'
    if cadena.isdigit():
    print 'Todos los caracteres de la cadena son numeros'

    Si al menos uno de los caracteres es distinto a un dígito retorna False. Inclusive si tiene el caracter punto.

  • isalpha()
    Retorna True si todos los caracteres son alfabéticos.
    cadena='Hola Mundo'
    if cadena.isalpha():
    print 'Todos los caracteres de la cadena son del alfabeticos'
    else:
    print 'No todos los caracteres de la cadena son del alfabeticos'

    En el ejemplo superior ejecuta el bloque del else ya que la cadena contiene un caracter de espacio.

  • isspace()
    Retorna verdadero si todos los caracteres de la cadena son espacios en blanco
    cadena='   '
    if cadena.isspace():
    print 'Todos los caracteres de la cadena son espacios en blanco'

  • isalnum()
    Retorna True si todos los caracteres de la cadena son números o caracteres alfabéticos.
    cadena='cordoba2008'
    if cadena.isalnum():
    print 'Todos los caracteres son numeros o alfabeticos'

  • find('cadena',[inicio],[fin])
    Retorna la posición donde se encuentra el valor del primer parámetro en el string. Si no se encuentra retorna -1. Podemos indicar como segundo y tercer parámetro a partir de que posición y hasta que posición de la cadena hacer la búsqueda.
    cadena='esto es una prueba y es solo eso'
    pos=cadena.find('es')
    print pos #0

    Retorna 0 ya que los dos primeros caracteres son la cadena 'es', es decir retorna la primera aparición del string.
    cadena='esto es una prueba y es solo eso'
    pos=cadena.find('es',5)
    print pos #5

    En este otro ejemplo comenzamos la búsqueda a partir de la posición 5. Si no indicamos el tercer parámetro la búsqueda la hace hasta el final de la cadena

  • rfind('cadena',[inicio],[fin])
    Igual al método find con la diferencia que la búsqueda comienza desde el final.
    cadena='esto es una prueba y es solo eso'
    pos=cadena.rfind('es')
    print pos #29

  • count('cadena',[inicio],[fin])
    Retorna la cantidad de veces que la cadena se repite en el string.
    cadena='esto es una prueba y es solo eso'
    cant=cadena.count('es')
    print cant #4

  • replace('cadena1','cadena2',[maximo])
    Retorna un string remplazando todas las ocurrencias de cadena1 por cadena2. Podemos eventuamente indicar la cantidad máxima de remplazos.
    cadena1='esto es una prueba y es solo eso'
    cadena2=cadena1.replace('es','ES')
    print cadena2 #ESto ES una prueba y ES solo ESo

  • split('caracter separador',[maximo])
    El método split retorna una lista dividiendo el string por el caracter indicado en el primer parámetro. Podemos pasar un segundo parámetro indicando la cantidad de trozos a general, el último elemento de la lista almacena el resto del string.
    cadena='esto es una prueba y es solo eso'
    lista=cadena.split(' ')
    print lista #['esto', 'es', 'una', 'prueba', 'y', 'es', 'solo', 'eso']
    print len(lista) #8
    lista=cadena.split(' ',2)
    print lista #['esto', 'es', 'una prueba y es solo eso']
    print len(lista) #3

  • rsplit('caracter separador',[maximo])
    Semejante a split pero procesando desde el final del string. En caso de indicar maximo el primer elemento de la lista almacena el trozo restante.
    cadena='esto es una prueba y es solo eso'
    lista=cadena.rsplit(' ')
    print lista #['esto', 'es', 'una', 'prueba', 'y', 'es', 'solo', 'eso']
    print len(lista) #8
    lista=cadena.rsplit(' ',2)
    print lista #['esto es una prueba y es', 'solo', 'eso']
    print len(lista) #3

  • splitlines()
    Retorna una lista dividiendo el string con los retornos de carro contenidos en el mismo.
    mensaje="""Primer linea
    Segunda linea
    Tercer linea
    Cuarta linea"""
    lista=mensaje.splitlines()
    print lista #['Primer linea', ' Segunda linea', ' Tercer linea', ' Cuarta linea']

  • swapcase()
    Retorna un string transformando los caracteres minúsculas a mayúsculas y los mayúsculas a minúsculas.
    cadena1='Sistema de Facturacion'
    cadena2=cadena1.swapcase()
    print cadena2 #sISTEMA DE fACTURACION

  • rjust(ancho,caracter de relleno)
    Retorna un string justificado a derecha y rellenando el lado izquierdo con caracteres según el segundo parámetro. La nueva cadena toma un largo indicado según el valor del primer parámetro.
    cadena='200'
    cadena2=cadena.rjust(5,'$')
    print cadena2 #$$200

  • ljust(ancho,caracter de relleno)
    Similar a rjust con la salvedad que se justifica a derecha el string.
    cadena='200'
    cadena2=cadena.ljust(5,'$')
    print cadena2 #200$$

  • center(ancho,caracter de relleno)

    El string original se centra.
    cadena='200'
    cadena2=cadena.center(5,'$')
    print cadena2 #$200$

Las listas tratadas como objetos.
python listas
Ahora veremos más profundamente el concepto de listas en Python y los métodos que provee su clase.
Los métodos:

  • append(elemento)
    El método append añade un elemento al final de la lista.
    lista=['juan','ana','luis']
    lista.append('carlos')
    print lista #['juan', 'ana', 'luis', 'carlos']

  • extend(elementos)
    El método extend procesa la secuencia de elementos del parámetro y los añade uno a uno a la lista. La diferencia con el método append es que append siempre añade un único elemento a la lista y extend añade tantos elementos como tenga la secuencia.
    lista=['juan','ana','luis']
    lista.extend(['uno','dos'])
    print lista #['juan', 'ana', 'luis', 'uno', 'dos']

    Ahora la lista tiene 5 elementos, es decir se añadieron 2 nuevas componentes a la lista.

    En cambio si utilizamos append el resultado es:
    lista=['juan','ana','luis']
    lista.append(['uno','dos'])
    print lista #['juan', 'ana', 'luis', ['uno', 'dos']]
    Ahora la lista tiene cuatro elementos y el último elemento es una lista también.

  • insert(posición,elemento)

    El método insert añade un elemento en la posición que le indicamos en el primer parámetro.
    lista=['juan','ana','luis']
    lista.insert(0,'carlos')
    print lista #['carlos', 'juan', 'ana', 'luis']

    En este ejemplo insertamos la cadena 'carlos' al principio de la lista, ya que pasamos la posición 0, no se borra el elemento que se encuentra en la posición 0 sino se desplaza a la segunda posición.
    Si indicamos una posición que no existe porque supera a la posición del último elemento se inserta al final de la lista.

  • pop([posicion]
    El método pop si lo llamamos sin parámetro nos retorna y borra la información del último nodo de la lista. Si en cambio pasamos un entero este indica la posición del cual se debe extraer.
    lista=['juan','ana','luis','marcos']
    elemento=lista.pop()
    print elemento #marcos
    print lista #['juan', 'ana', 'luis']
    print lista.pop(1) #ana
    print lista #['juan', 'luis']

  • remove(elemento)

    Borra el primer nodo que coincide con la información que le pasamos como parámetro.
    lista=['juan','ana','luis','marcos','ana']
    lista.remove('ana')
    print lista #['juan', 'luis', 'marcos', 'ana']

  • count(elemento)

    Retorna la cantidad de veces que se repite la información que le pasamos como parámetro.
    lista=['juan','ana','luis','marcos','ana']
    print lista.count('ana') #2

  • index(elemento,[inicio],[fin])

    Retorna la primera posición donde se encuentra el primer parámetro en la lista. Podemos eventualmente indicarle a partir de que posición empezar a buscar y en que posición terminar la búsqueda.

    Si no lo encuentra en la lista genera un error: ValueError: list.index(x): x not in list
    lista=['juan','ana','luis','marcos','ana']
    print lista.index('ana') #1

  • sort()
    Ordena la lista de menor a mayor.
    lista=['juan','ana','luis','marcos','ana']
    lista.sort()
    print lista #['ana', 'ana', 'juan', 'luis', 'marcos']

  • reverse()
    Invierte el orden de los elementos de la lista.
    lista=['juan','ana','luis','marcos','ana']
    lista.reverse()
    print lista #['ana', 'marcos', 'luis', 'ana', 'juan']

Si necesitamos borrar un nodo de la lista debemos utilizar el comando del que provee Python:
lista=['juan','ana','luis','marcos']
del lista[2]
print lista   #['juan', 'ana', 'marcos']


Podemos utilizar el concepto de porciones para borrar un conjunto de elementos de la lista:
Si queremos borrar los elementos de la posición 2 hasta la 3:
lista=['juan','ana','carlos','maria','pedro']
del lista[2:4]
print lista # ['juan', 'ana', 'pedro']


Si queremos borrar desde la 2 hasta el final:
lista=['juan','ana','carlos','maria','pedro']
del lista[2:]
print lista # ['juan', 'ana']


Si queremos borrar todos desde el principio hasta la posición 3 sin incluirla:
lista=['juan','ana','carlos','maria','pedro']
del lista[:3]
print lista # ['maria', 'pedro']


Si queremos ir borrando de a uno de por medio:
lista=['juan','ana','carlos','maria','pedro']
del lista[::2]
print lista # ['ana', 'maria']


Si necesitamos modificar el contenido de un nodo de la lista debemos utilizar el operador de asignación:
lista=['juan','ana','luis','marcos']
lista[2]='xxxxx'
print lista   #['juan', 'ana', 'xxxxx', 'marcos']




python3-ubuntu-1

Volver a la Portada de Logo Paperblog