Bonita lista enlazada de impresión en Python

Crear tipos de datos personalizados puede ser complicado, especialmente cuando desea usarlo como cualquier otro tipo de datos. La lista vinculada se puede considerar como un ejemplo de un tipo de datos personalizado. En otros idiomas, si desea imprimir la lista enlazada, definiría una función de impresión separada, algo así como pprint pero se ve un poco extraño, ¿verdad? Sería fantástico que la función de impresión predeterminada hiciera lo mismo, ¿verdad? Bueno, ahí es donde entra Python. Python tiene algunos métodos sorprendentes llamados métodos Dunder

metodos dunder

Dunder significa doble bajo métodos. Básicamente, los métodos que comienzan y terminan con guiones bajos dobles se denominan métodos Dunder o métodos mágicos . Uno de esos ejemplos de método under es __init__ . Un método similar es __str__ , que usaremos en este artículo. Este método se puede utilizar para la impresión bonita en Python. Pretty print no es más que aplicar varios tipos de estilos y formatear el contenido que se va a imprimir. Obtenga más información sobre los métodos de dunder aquí .

Los métodos __str__ especifican lo que debe devolverse de una clase cuando esa clase se imprime utilizando la función de impresión estándar . Usando este concepto, podemos tener una representación mucho mejor del tipo de datos personalizado. A continuación se muestra un ejemplo de dicha representación personalizada. Tenga en cuenta que la atención se centra en la implementación de la lista enlazada, pero más en la forma pythonica de representarla. 

Ejemplo: bastante imprimir una lista enlazada individualmente 10->15->20 como [10, 15, 20]

Python3

class Node:
    def __init__(self, val=None):
        self.val = val
        self.next = None
 
 
class LinkedList:
    def __init__(self, head=None):
        self.head = head
 
    def __str__(self):
       
        # defining a blank res variable
        res = ""
         
        # initializing ptr to head
        ptr = self.head
         
       # traversing and adding it to res
        while ptr:
            res += str(ptr.val) + ", "
            ptr = ptr.next
 
       # removing trailing commas
        res = res.strip(", ")
         
        # chen checking if
        # anything is present in res or not
        if len(res):
            return "[" + res + "]"
        else:
            return "[]"
 
 
if __name__ == "__main__":
   
    # defining linked list
    ll = LinkedList()
 
    # defining nodes
    node1 = Node(10)
    node2 = Node(15)
    node3 = Node(20)
 
    # connecting the nodes
    ll.head = node1
    node1.next = node2
    node2.next = node3
     
    # when print is called, by default
    #it calls the __str__ method
    print(ll)
Producción

[10, 15, 20]

Tenga en cuenta que al imprimir la clase, __str__ se llama de forma predeterminada. Esta es la magia de Python. El objetivo principal de este artículo es mostrar cómo los pequeños métodos mágicos pueden hacer que sus vidas sean mucho más fáciles. 

Publicación traducida automáticamente

Artículo escrito por debdutgoswami 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 *