Sie sind auf Seite 1von 7

VECTORES EN PYTHON

Ordenamiento de listas en
Python
Los elementos de una lista pueden ser ordenados a travs del mtodo sort() o utilizando la
funcin sorted(). Cmo argumento puede utilizar reverse con el valor True o False. Por
defecto, se utiliza el segundo valor, el cul indica que la lista ser ordenada de mayor a menor.
Si por el contrario el valor es True, la lista ser ordenada inversamente.
1. >>> list = [3, 1, 9, 8, 6]
2. >>> sorted(list)
3. [1, 3, 6, 8, 9]
4. >>> sorted(list, reverse = True)
5. [9, 8, 6, 3, 1]
6. >>> list
7. [3, 1, 9, 8, 6]

Como puedes ver la lista original ha quedado inalterada. Sin embargo, si en lugar de utilizar
sorted(), utilizamos el mtodo sort(), la lista quedar automticamente modificada.
1. >>> list.sort()
2. >>> list
3. [1, 3, 6, 8, 9]

Tanto para aplicar sort() cmo sorted() debemos tener en cuenta que la lista que va a ser
ordenada contiene elementos que son del mismo tipo. En caso contrario, el intrprete de

Python lanzar un error. No obstante, es posible realizar ordenaciones de listas con elementos
de distinto tipo si es el programador el encargado de establecer el criterio de ordnacin. Para
ello, contamos con el parmetro key que puede ser pasado cmo argumento. El valor del
mismo puede ser una funcin que fijar cmo ordenar los elementos. Adems, el mencionado
parmetro tambin puede ser utilizado para cambiar la forma de ordenar que emplee el
intrprete por defecto, aunque los elementos sean del mismo tipo. Supongamos que tenemos
la siguiente lista:
1. >>> list = ["aA", "Ab", "Cc", "ca"]

Ahora ordenamos con la funcin sorted() sin ningn parmetro adicional y observaremos que
el criterio de ordenacin que utiliza el intrprete, por defecto, es ordenar primero las letras
maysculas:
1. >>> sorted(list)
2. ["Ab", "Cc", "aB", "ca"]

Sin embargo, al pasar cmo argumento un determinado criterio de ordenacin, el resultario


vara:
1. >>> sorted(list, key = str.lower)
2. ["aA", "Ab", "ca", "Cc"]

Otro mtodo que contienen las listas relacionado con la ordenacin de valores es reverse(),
que automticamente ordena una lista en orden inverso al que se encuentran sus elementos
originales. Tomando el valor de la ltima lista del ejemplo, veamos que sucede:
1. >>> list.reverse()
2. >>> list
3. [9, 8, 6, 3, 1]

Los mtodos y funciones de ordenacin no slo funcionan con nmeros, sino tambin con
caracteres y con cadenas de texto:

1. >>> list = ["be", "ab", "cc", "aa", "cb"]


2. >>> list.sort()
3. >>> list
4. ["aa", "ab", "be", "cb", "cc"]

- See more at: http://www.codejobs.biz/es/blog/2013/03/18/ordenamiento-de-listas-enpython#sthash.ejN0QDrs.dpuf

Ejercicios de vectores
Ejercicio 7.6.1. Escribir una funcin que reciba una tupla de elementos e indique
si se encuentran ordenados de menor a mayor o no.
Ejercicio 7.6.2. Domin.
1.

Escribir una funcin que indique si dos fichas de domin encajan o no. Las fichas
son recibidas en dos tuplas, por ejemplo: (3,4) y (5,4).

2.

Escribir una funcin que indique si dos fichas de domin encajan o no. Las fichas
son recibidas en una cadena, por ejemplo: 3-4 2-5. Nota: utilizar la funcin split de
las cadenas.

Ejercicio 7.6.3. Campaa electoral


1.

Escribir una funcin que reciba una tupla con nombres, y para cada nombre
imprima el mensajeEstimado , vote por m.

2.

Escribir una funcin que reciba una tupla con nombres, una posicin de origen p y
una cantidad n, e imprima el mensaje anterior para los n nombres que se encuentran
a partir de la posicin p.

3.

Modificar las funciones anteriores para que tengan en cuenta el gnero del
destinatario, para ello, debern recibir una tupla de tuplas, conteniendo el nombre y
el gnero.

Ejercicio 7.6.4. Vectores


1.

Escribir una funcin que reciba dos vectores y devuelva su producto escalar.

2.

Escribir una funcin que reciba dos vectores y devuelva si son o no ortogonales.

3.

Escribir una funcin que reciba dos vectores y devuelva si son paralelos o no.

4.

Escribir una funcin que reciba un vector y devuelva su norma.

Ejercicio 7.6.5. Dada una lista de nmeros enteros, escribir una funcin que:
1.

Devuelva una lista con todos los que sean primos.

2.

Devuelva la sumatoria y el promedio de los valores.

3.

Devuelva una lista con el factorial de cada uno de esos nmeros.

Ejercicio 7.6.6. Dada una lista de nmeros enteros y un entero k, escribir una
funcin que:
1.

Devuelva tres listas, una con los menores, otra con los mayores y otra con los
iguales a k.

2.

Devuelva una lista con aquellos que son mltiplos de k.

Ejercicio 7.6.7. Escribir una funcin que reciba una lista de tuplas (Apellido,
Nombre, Inicial_segundo_nombre) y devuelva una lista de cadenas donde cada
una contenga primero el nombre, luego la inicial con un punto, y luego el apellido.
Ejercicio 7.6.8. Inversin de listas
1.

Realizar una funcin que, dada una lista, devuelva una nueva lista cuyo contenido
sea igual a la original pero invertida. As, dada la lista ['Di', 'buen', 'da', 'a', 'papa'],
deber devolver['papa', 'a', 'da', 'buen', 'Di'].

2.

Realizar otra funcin que invierta la lista, pero en lugar de devolver una nueva,
modifique la lista dada para invertirla, si usar listas auxiliares.

Ejercicio 7.6.9. Escribir una funcin empaquetar para una lista, donde epaquetar
significa indicar la repeticin de valores consecutivos mediante una tupla (valor,
cantidad de repeticiones). Por ejemplo, empaquetar ([1, 1, 1, 3, 5, 1, 1, 3, 3]) debe
devolver [(1, 3) , (3, 1) , (5, 1), (1, 2), (3, 2)].
Ejercicio 7.6.10. Matrices.
1.

Escribir una funcin que reciba dos matrices y devuelva la suma.

2.

Escribir una funcin que reciba dos matrices y devuelva el producto.

3.

Escribir una funcin que opere sobre una matriz y mediante eliminacin
gaussiana devuelva una matriz triangular superior.

4.

Escribir una funcin que indique si un grupo de vectores, recibidos mediante una
lista, son linealmente independientes o no.

Ejercicio 7.6.11. Plegado de un texto. Escribir una funcin que reciba un texto y
una longitud y devuelva una lista de cadenas de como mximo esa longitud. Las
lneas deben ser cortadas correctamente en los espacios (sin cortar las palabras).
Ejercicio 7.6.12. Funciones que reciben funciones.
1.

Escribir una funcion llamada map, que reciba una funcin y una lista y devuelva la
lista que resulta de aplicar la funcin recibida a cada uno de los elementos de la lista
recibida.

2.

Escribir una funcin llamada filter, que reciba una funcin y una lista y devuelva
una lista con los elementos de la lista recibida para los cuales la funcin recibida
devuelve un valor verdadero.

3.

En qu ejercicios de esta gua podra haber utilizado estas funciones?

El problema de la bsqueda
Presentamos ahora uno de los problemas ms clsicos de la computacin, el
problema de la bsqueda, que se puede enunciar de la siguiente manera:

Problema: Dada una lista xs y un valor x devolver el ndice de x en xs si x est


en xs, y 1 si x no est en xs`.
Alicia Hacker afirma que este problema tiene una solucin muy sencilla en Python:
se puede usar directamente la poderosa funcin index() de lista.
Probamos esa solucin para ver qu pasa:
>>> [1,3,5,7].index(5)
2
>>> [1,3,5,7].index(20)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list

Vemos que usar la funcin index() resuelve nuestro problema si el valor buscado
est en la lista, pero si el valor no est no slo no devuelve un 1, sino que se
produce un error.
El problema es que para poder aplicar la funcin index() debemos estar seguros
de que el valor est en la lista, y para averiguar eso Python nos provee del
operador in:
>>> 5 in [1,3,5,7]
True
>>> 20 in [1, 3, 5, 7]
False

O sea que si llamamos a la funcin index() slo cuando el resultado de in es


verdadero, y devolvemos 1 cuando el resultado de in es falso, estaremos
resolviendo el problema planteado usando slo funciones provistas por Python. La
solucin se muestra en el cdigo 8.1.
Probamos la funcin busqueda_con_index():
>>> busqueda_con_index([1, 4, 54, 3, 0, -1], 1)

0
>>> busqueda_con_index([1, 4, 54, 3, 0, -1], -1)
5
# busqueda_con_index.py: Busca utilizando index e in provistos por Python

#!/usr/bin/env python
# encoding: latin1

def busqueda_con_index(xs, x):


"""Busca un elemento x en una lista xs
si x est en xs devuelve xs.index(x)
de lo contrario devuelve -1
"""

if x in xs:
return(xs.index(x))
else:
return(-1)
>>> busqueda_con_index([1, 4, 54, 3, 0, -1], 3)
3
>>> busqueda_con_index([1, 4, 54, 3, 0, -1], 44)
-1
>>> busqueda_con_index([], 0)
-1

Das könnte Ihnen auch gefallen