El lenguaje Python nos facilita una sintaxis muy sencilla par recuperar un trozo de una lista, tupla o cadena de caracteres.
Veremos con una serie de ejemplos como podemos rescatar uno o varios elementos de las estructuras de datos mencionadas.
lista1=[0,1,2,3,4,5,6] lista2=lista1[2:5] print(lista2) # 2,3,4 lista3=lista1[1:3] print(lista3) # 1,2 lista4=lista1[:3] print(lista4) # 0,1,2 lista5=lista1[2:] print(lista5) # 2,3,4,5,6
Para recuperar una "porción" o trozo de una lista debemos indicar en el subíndice dos valores separados por el caracter ":".
Del lado izquierdo indicamos a partir de que elementos queremos recuperar y del lado derecho hasta cual posición sin incluir dicho valor.
Por ejemplo con la sintaxis:
lista1=[0,1,2,3,4,5,6] lista2=lista1[2:5] print(lista2) # 2,3,4
Estamos recuperando de la posición 2 hasta la 5 sin incluirla.
También es posible no indicar alguno de los dos valores:
lista4=lista1[:3] print(lista4) # 0,1,2
Si no indicamos el primer valor estamos diciendo que queremos recuperar desde el principio de la lista hasta la posición menos uno indicada después de los dos puntos.
En cambio si no indicamos el valor después de los dos puntos se recupera hasta el final de la lista:
lista5=lista1[2:] print(lista5) # 2,3,4,5,6
Confeccionar una función que le enviemos un número de mes como parámetro y nos retorne una tupla con todos los nombres de meses que faltan hasta fin de año.
def meses_faltantes(numeromes): meses=('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre') return meses[numeromes:] # bloque principal print("Imprimir los nombres de meses que faltan hasta fin de año") numeromes=int(input("Ingrese el numero de mes:")) mesesfalta=meses_faltantes(numeromes) print(mesesfalta)
Utilizamos el concepto de porciones que nos brinda Python para recuperar en forma muy sencilla un trozo de una tupla. La función meses_faltantes recibe como parámetro un entero y retorna una tupla:
def meses_faltantes(numeromes): meses=('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre') return meses[numeromes:]
Como vemos generamos una tupla a partir del valor "numeromes" hasta el final de la tupla:
return meses[numeromes:]
En el bloque principal del programa cargamos el número de mes, llamamos a la función e imprimimos la tupla devuelta por la función:
# bloque principal print("Imprimir los nombres de meses que faltan hasta fin de año") numeromes=int(input("Ingrese el numero de mes:")) mesesfalta=meses_faltantes(numeromes) print(mesesfalta)
Hay que tener en cuenta que el concepto de "porciones" se puede aplicar en forma indistinta a listas, tuplas y cadenas de caracteres.
Confeccionar una función que reciba una cadena de caracteres y nos devuelva los tres primeros.
En el bloque principal del programa definir una tupla con los nombres de meses. Mostrar por pantalla los primeros tres caracteres de cada mes.
def primeros_tres(cadena): return cadena[:3]; # bloque principal meses=('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre') for x in meses: print(primeros_tres(x))La función primeros_tres recibe un string y retorna los tres primeros caracteres:
def primeros_tres(cadena): return cadena[:3];
En el bloque principal definimos la tupla y luego la recorremos con un for llamando en la misma a la función que acabamos de crear:
meses=('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre') for x in meses: print(primeros_tres(x))
El comando "del" de Python para la eliminación de componentes de una lista también funcionan con la sintaxis de porciones:
del(lista[2:5]) # eliminamos los elementos de las posiciones 2,3 y 4
ejercicio173.py def cargar(): lista=[] for x in range(10): valor=int(input("Cargar valor:")) lista.append(valor) return lista def retornar_mitad(lista): mitad=len(lista)//2 return lista[:mitad] def imprimir(lista): print("Contenido de la lista") print(lista) # bloque principal lista=cargar() lista2=retornar_mitad(lista) imprimir(lista) imprimir(lista2) ejercicio174.py cadena=input("Ingrese una cadena de caracteres:") print("Los dos primeros caracteres") print(cadena[:2]) print("Los dos ultimos caracteres") print(cadena[len(cadena)-2:]) print("Todos los caracteres menos el primero y el ultimo") print(cadena[1:len(cadena)-1])