Python: Revisitando objetos

En Python: Tipos básicos y Python: Tipos básicos II veíamos por primera vez algunos de los objetos del lenguaje Python: números, booleanos, cadenas de texto, diccionarios, listas y tuplas.

Ahora que sabemos qué son las clases, los objetos, las funciones, y los métodos es el momento de revisitar estos objetos para descubrir su verdadero potencial.

Veremos a continuación algunos métodos útiles de estos objetos. Evidentemente, no es necesario que los memoricéis, pero si, al menos, recordar que existen para cuando os hagan falta.

Diccionarios

D.has_key(k)
Comprueba si el diccionario tiene la clave k. Es equivalente a la sintaxis k in D.

D.items()
Devuelve una lista de tuplas con pares clave-valor.

D.keys()
Devuelve una lista de las claves del diccionario.

D.pop(k[, d])
Borra la clave k del diccionario y devuelve su valor. Si no se encuentra dicha clave se devuelve d si se especificó el parámetro o bien se lanza una excepción.

D.values()
Devuelve una lista de los valores del diccionario.

Cadenas

S.count(sub[, start[, end]])
Devuelve el número de veces que se encuentra sub en la cadena. Los parámetros opcionales start y end definen una subcadena en la que buscar.

S.find(sub[, start[, end]])
Devuelve la posición en la que se encontró por primera vez sub en la cadena o -1 si no se encontró.

S.join(sequence)
Devuelve una cadena resultante de concatenar las cadenas de la secuencia seq separadas por nuestra cadena.

S.partition(sep)
Busca el separador sep en la cadena y devuelve una tupla con la subcadena hasta dicho separador, el separador en si, y la subcadena del separador hasta el final de la cadena. Si no se encuentra el separador, la tupla contendrá la cadena en si y dos cadenas vacías.

S.replace(old, new[, count])
Devuelve una cadena en la que se han reemplazado todas las ocurrencias de la cadena old por la cadena new. Si se especifica el parámetro count, este indica el número máximo de ocurrencias a reemplazar.

S.split([sep [,maxsplit]])
Devuelve una lista conteniendo las subcadenas en las que se divide nuestra cadena al dividirlas por el delimitador sep. En el caso de que no se especifique sep, se usan espacios. Si se especifica maxsplit, este indica el número máximo de particiones a realizar.

Listas

L.append(object)
Añade un objeto al final de la lista.

L.count(value)
Devuelve el número de veces que se encontró value en la lista.

L.extend(iterable)
Añade los elementos del iterable a la lista.

L.index(value[, start[, stop]])
Devuelve la posición en la que se encontró la primera ocurrencia de value. Si se especifican, start y stop definen una sublista en la que buscar.

L.insert(index, object)
Inserta el objeto object en la posición index.

L.pop([index])
Devuelve el valor en la posición index y lo elimina de la lista. Si no se especifica la posición, se utiliza el último elemento de la lista.

L.remove(value)
Eliminar la primera ocurrencia de value en la lista.

L.reverse()
Invierte la lista. Esta función trabaja sobre la propia lista desde la que se invoca el método, no sobre una copia.

L.sort(cmp=None, key=None, reverse=False)
Ordena la lista. Si se especifica cmp, este debe ser una función que tome como parámetro dos valores x e y de la lista y devuelva -1 si x es menor que y, 0 si son iguales y 1 si x es mayor que y.

El parámetro reverse es un booleano que indica si se debe ordenar la lista de forma inversa, lo que sería equivalente a llamar primero a L.sort() y después a L.reverse().

Por último, si se especifica, el parámetro key debe ser una función que tome un elemento de la lista y devuelva una clave a utilizar a la hora de comparar, en lugar del elemento en si.

Comentarios
  1. Una cosa que nunca he podido encontrar y no se porque es un método que limpie una lista completamente. Sólo “remove” y “pop”, pero para borrar completamente la lista tengo que recorrerla

    ¿sabes como es?

    Por cierto, te envié un correo el sábado pero no se si lo has recibido, es sobre un programa que he realizado llamado “megadownloader” en el que uso parte del código de tu programa “megaupload-dl”

    Puedes verlo aquí:

    http://megadownloader.javielinux.com/

    No se si no te llegó el correo. Un saludo y gracias por tus post de python que me vienen muy bien

    Responder

  2. Gracias genio!

    Responder

  3. ¿A qué te refieres exactamente con limpiar la lista javielinux? Si quieres que l sea una lista vacia basta con asociar l a una lista vacía.

    Si lo dices por el tema de la memoria, si es la única referencia que tenías apuntando a ese valor el recolector de basura entrará a trabajar y eliminará de la memoria esos datos que ya no se necesitan.

    Aunque puede que no obtengas exactamente la misma cantidad de memoria que antes, porque Python puede decidir mantener la memoria reservada en lugar de hacer un free.

    Leí el correo, por cierto, pero no he tenido mucho tiempo para contestar correos estos días. De hecho estoy publicando tanto del tutorial de Python últimamente porque tengo unas cuantas entradas escritas. Lo siento mucho. Me alegro de que el código te haya sido de utilidad, aunque era bastante sencillote.

    Gracias Gandhi 🙂

    Responder

  4. Yo es que estoy fatal. Me he ‘jartao’ de buscar por Internet algo como:

    l.clear()

    que no he encontrado por ningún sitio, y no se me ocurre asignarlo a una lista vacía, ufffff

    Bueno gracias por todo, y sobretodo por el código de tu programa que me ha servido para mucho. Lo que he visto que alguna veces me da un error en una parte del código que usé y me pasa tanto en tu programa como en el mío por supuesto, ya que en realidad es el tuyo 😉

    Te lo cuento mejor por correo ya que se que el email es correcto para no salirme del tema de este post y cuando tu tengas tiempo y ganas lo ves si te apatece

    muchas gracias por todo

    Responder

  5. Fox

    Uh uh, grande javielinux, vamos a ver tu software, y a ver si me animo yo y hago algo util en python también que me quedo atrás 😛

    Y muy bueno este tuto, ayudará a los novatos seguro.

    Ahg, eso tb me recuerda que tengo que hacer algún tuto de python, para seguir los que ya tengo hechos, aunque son independientes unos de otros.

    Un saludo.

    Responder

  6. ¿Dónde tienes colgados esos tutoriales de Python Fox?

    Responder

  7. Fox

    Ya hemos hablado del tema zoo.

    Los tenía colgado en lynksee, pero murió ese free hosting de wordpress. Usaba este por ser gratuito y permitir subir plugins (para el coloreado de código).

    Tampoco hice mucho, ejemplo de uso de pysqlite, poder lanzar un proceso a la vez que un dialogo GTK, ejemplo básico de python + pygtk (usando glade), uso de pydoc. Esto, bueno, el blog estuvo 2 meses vivo, lynskee murio rapido jeje.

    En un principio iba a hacer un tuto como el tuyo, de hecho escribí el indice y un par de capitulos, pero en esa epoca no me veia preparado para llevarlo a cabo, de hecho no iba a explicar ni la OO.

    Quizas me animo y vuelvo a la carga, que ganas tengo y conocimientos de python con redes tengo. Ya veremos 🙂

    Y zoo, ya podrías explicar el uso de properties por ejemplo, es util y desconocido para muchos.

    Responder

  8. Es cierto, me lo comentaste hace tiempo. Estoy fatal de lo mío 😛

    Las propiedades las nombré de pasada en el de orientación a objetos y puse un pequeño ejemplo.

    Responder

  9. Fox

    Uh, cierto lo de las propiedades, se me pasó, aunque es cierto que los tutos los miro por encima, ya que es algo que se de memoria 😛

    Responder

  10. Bueno, ya está de nuevo el blog en pié en otro sitio, podeis verlo si pinchais en mi nick.

    Arriba python!

    Responder

  11. Excelente estos tutos!! Cada vez aprendo mas y no había encontrado un manual tan cómodo y fácil de leer…no se si te ha llegado el correo electrónico que te he enviado sobre concentrarlos en un solo lugar para distribuirlos.

    Un saludo y adelante!!

    Responder

  12. A mí no me funciona, Fox.

    Marshal, no me llegó ese correo. ¿Lo has enviado a zootropo en gmail?

    De todas formas, si, debería crear una página en la que tenerlos todos juntos.

    Responder

  13. No te funciona? a mi me va bien, aunque es un host gratuitos de estos, quizas se quede muerto alguna vez:

    http://pyfox.zzl.org/

    Y si, es buena idea que concentres tus tutos, la verdad es que un blog no es la mejor idea para estos temas, aunque yo estoy igual, usando un blog.

    Un saludo.

    Responder

  14. Ahora si, supongo que sería algo momentáneo del hosting

    Responder

  15. Si Zootropo lo enviado a tu correo en Gmail…pero bueno eso ya no tiene importancia mejor decirtelo aquí, me he tomado la molestia de unir todos los tutoriales que has puesto en un documento .odt y otro en pdf y quería ver si te interesaba para enviártelo y que lo publiques…

    Responder

  16. Tengo pensado crear un PDF con el curso completo cuando lo termine, lo que no se es si creado con OpenOffice.org o bien hacerlo con LaTeX y colgar otros formatos.

    Responder

  17. Mmmm…pues di es tu decision jeje la verdad lo hice en caso de que no lo hubieras pensado pero por lo visto ya lo hiciste jaja

    Saludos

    Responder

  18. Hitsugaya

    Hola!!

    esta muy interesante el articulo, soy nueva en python y bueno, tengo que hacer un proyecto, que de un texto se obtengan bigramas y trigramas,asi como la frecuencia de cada uno de ellos.

    como le puedo hacer? que funcion me recomiendan? es que no tengo ni la menor idea de por donde empezar. Por ejemplo, si yo tengo:

    El dia esta muy soleado y los niños salen a jugar.

    Io tendria que obtener lo siguiente:

    El dia esta 1
    muy soleado y 1
    los niños salen 1

    gracias

    Responder

  19. cristian

    necesito con urgencia informacion de como aplicar la obcion de revicitando objetos.

    Responder

  20. jonisar

    javielinux:

    Para “clear” un lista podes hacerlo así…

    >>> lista = [1, “pi”, 3.1415]
    >>> lista
    [1, ‘pi’, 3.1415]

    >>> del lista[:]
    >>> lista
    []

    Responder

Deja un comentario