Uso de slice() en Python

A veces, el código se convierte en un desorden ilegible de índices de corte codificados. Considere el siguiente código que almacena los detalles de los estudiantes (nombre, número de teléfono, dirección, calificaciones en 5 materias) en la lista , los muestra uno por uno y finalmente muestra las calificaciones totales promedio.
 

Python3

L = [('Student A', 9876543210, 'Address of A', 99, 82, 97, 78, 69),
     ('Student B', 9999999999, 'Address of B', 90, 83, 87, 72, 67),
     ('Student C', 8888888888, 'Address of C', 88, 41, 56, 61, 93)]
 
 
# Display (name, address, phone no., avg marks) for each student
for student in L:
    print(student[0:3], "Marks:", sum(student[3:])/5)
 
# Average total marks of the class
sum_of_marks = 0
for student in L:
    sum_of_marks += sum(student[3:])
     
print(sum_of_marks / 3)

Producción: 
 

('Student A', 9876543210, 'Address of A') Marks: 85.0
('Student B', 9999999999, 'Address of B') Marks: 79.8
('Student C', 8888888888, 'Address of C') Marks: 67.8
387.6666666666667

El código anterior hace su trabajo, pero un problema que podría ocurrir con este código es que si en el futuro decidimos agregar una entrada «Roll no» en el índice 1. Entonces será necesario cambiar todo el código. Además, este código tampoco es tan bueno en legibilidad. Este es solo un pequeño ejemplo. En grandes proyectos escribimos miles de líneas de códigos. Por lo tanto, se convierte en nuestro deber escribir código legible y mantenible. 
El mismo código se puede hacer legible y mantenible hasta cierto punto nombrando los segmentos usando el constructor slice() .
 

Sintaxis: 
 

  • cortar (detener) 
     
  • rebanada (inicio, parada, paso) 
     

Parámetros: 
inicio: índice de inicio donde comienza el corte del objeto. 
detener: índice final donde se detiene el corte del objeto. 
paso: Es un argumento opcional que determina el incremento entre cada índice para el corte.
Tipo de devolución: devuelve un objeto dividido que contiene elementos solo en el rango dado. 
 

Nota: slice(1, 5, 2) corresponde a a[1:5:2] y slice(1, 4) corresponde a a[1:4].
Reescribamos nuestro código.
 

Python3

l = [('Student A', 9876543210, 'Address of A', 99, 82, 97, 78, 69),
     ('Student B', 9999999999, 'Address of B', 90, 83, 87, 72, 67),
     ('Student C', 8888888888, 'Address of C', 88, 41, 56, 61, 93)]
 
# Naming slice
details = slice(0, 3)
marks = slice(3, 8)
 
# display (name, address, phone no., avg marks) for each student
for student in l:
    print(student[details], "MArks:", sum(student[marks])/5)
 
# display average total marks of the class
sum_of_marks = 0
for student in l:
    sum_of_marks += sum(student[marks])
print(sum_of_marks / 3)

Producción: 
 

('Student A', 9876543210, 'Address of A') MArks: 85.0
('Student B', 9999999999, 'Address of B') MArks: 79.8
('Student C', 8888888888, 'Address of C') MArks: 67.8
387.6666666666667

Publicación traducida automáticamente

Artículo escrito por coder_maddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *