Linked List / Lista Enlazada (P2) - Python 3.7
HTML-код
- Опубликовано: 13 сен 2024
- ◁ Copyright Sklyvan ▷
» VÍDEO CREADO POR SKLYVAN ©
» SU COPIA SIN PERMISO DEL CREADOR NO ESTÁ PERMITIDA.
▬ Redes Sociales ▬
➤ Instagram: / sklyvan
➤ Twitter: / sklyvan
➤ PasteBin: pastebin.com/u...
➤ Discord: Sklyvan #3902
◁ Características PC ▷
➜ Intel Socket 1151
➜ Intel Core i5-7600K 3,8GHz
➜ MSI Gaming M3 H270
➜ Corsair Vengeance LPX DDR4 2x4GB + 1x8GB 2600MHz
➜ Cooler Master Hyper 212 LED
➜ MSI GTX 1050 Ti 4GB
➜ EVGA Silver 500W
➜ Seagate 1TB HDD
➜ Kingston A400 120GB SSD
➜ Nox Hummer MC White
➜ Windows 10 Pro 64Bits
Creo que no importa la duración del video, sino el contenido. El tutorial de 30 minutos de listas enlazadas lo he visto todo. A los que realmente estamos interesados en el tema jamás nos parecerá aburrido.
Si, ha sido los mejores 30 min
sube más de estos videos, son geniales :’(
Mal que pienses así , no importa el tiempo que dure el vídeo lo que importa es que enseñes todo y bien enseñado como lo hiciste con el anterior vídeo 👍
Sigue con Python!
Muy buen video, y el otro tambien, tu explicaste un poco mejor este concepto que en el curso de estructuras de datos lineales de python de la academia platzi, no se supo desarrollar tan bien, ya que se cometio un error y es que la clase no duro mas de 14 min. Claro se desarrollaron otras clases, y algunas cosas son de manera distinta, dejo el codigo que pude complementar con tu video y con el de platzi
'''linked_list.py'''
class SinglyLinkedList:
def __init__(self):
self.tail = None
self.size = 0
def append(self, data):
node = Node(data)
if self.size == 0:
self.tail = node
else:
current = self.tail
while current.next != None:
current = current.next
current.next = node
self.size += 1
return print(f'Se ha añadido el nodo "{node}"')
def size(self):
return str(self.size)
def iter(self):
current = self.tail
while current:
val = current.data
current = current.next
yield val
def delete(self, data):
if self.size ==0:
return False
else:
current = self.tail
previous = self.tail
while current:
if current.data == data:
if current == self.tail:
self.tail = current.next
else:
previous.next = current.next
self.size -= 1
return current.data
previous = current
current = current.next
def search(self, data):
for node in self.iter():
if data == node:
print(f'Data {data} found!')
def clear(self):
self.tail = None
self.head = None
self.size = 0
def __str__(self):
string = '['
current = self.tail
for i in range(self.size):
string += str(current)
if i != self.size - 1:
string += str(', ')
current = current.next
string += ']'
return string
if __name__ == '__main__':
words = SinglyLinkedList()
words.delete('1')
words.append('egg')
words.append('ham')
words.append('spam')
words.delete('ham')
print(words.__str__())
print(words)
current = words.tail
while current:
print(current.data)
current = current.next
a = [word for word in words.iter()]
print(a)
words.search('spam')
words.clear()
while current:
print(current.data)
current = current.next
Buenas, muy buena explicación en ambos vídeos. Me he dado cuenta de que si quieres eliminar un valor que se encuentra en el primer nodo, tal y como lo has escrito no funcionaría pues siempre hace la comprobación en los next. Además habría que cambiar el nodo principal a el siguiente en caso de que esto ocurriera. Pongo por aquí el código con este matiz añadido. Un saludo.
def Eliminar(self, Valor):
MiNodo = Nodo(Valor)
if self.Tamaño == 0:
return print('Elemento no encontrado. La lista está vacía')
else:
Actual = self.Inicio
if Actual.Valor == Valor:
self.Inicio = Actual.Next
return print('Valor eliminado y en la primera posición')
try:
while Actual.Next.Valor != Valor:
Actual = Actual.Next
Eliminado = Actual.Next
Actual.Next = Eliminado.Next
except:
return print('Valor no encontrado')
self.Tamaño -= 1
Gracias
He conseguido arreglar el tema de la coma sin cambiar el metodo
class Node:
def __init__(self, value):
self.value = value
self.next = None
def __str__(self):
return str(self.value)
class Linkedlist:
def __init__(self):
self.first = None
self.size = 0
def Append(self, value):
MyNode = Node(value)
if self.size == 0:
self.first = MyNode
else:
Current = self.first
while Current.next != None:
Current = Current.next
Current.next = MyNode
self.size += 1
return MyNode
def Remove(self, value):
if self.size == 0:
return False
else:
Current = self.first
try:
while Current.next.value != value:
if Current.next == None:
return False
else:
Current = Current.next
DeletedNode = Current.next
Current.next = DeletedNode.next
except AttributeError:
return False
self.size -= 1
return DeletedNode
def __len__(self):
return self.size
def __str__(self):
string = "["
Current = self.first
while Current != None:
string += str(Current)
# Este simple condicional para arreglar el tema de la coma
if Current.next != None:
string += str(", ")
Current = Current.next
string += "]"
return string
MyList = Linkedlist()
MyList.Append(1)
MyList.Append(2)
MyList.Append(3)
MyList.Append(4)
MyList.Remove(4)
print(MyList)
mas python e inteligencia artificial
Pronto subiré dos videos de Web Scraping, y luego empezaré con Machine Learning en Python ;)
@@Sklyvan excelente
Hola! Me suena tu voz..
Se parece a la de Jordi Pereyra de Ciencia de sofá.
@@porwaltz5571 no. Lo digo porque el jugaba gd antes y Paso tanto tiempo que cambio su canal mucho
la cagaste estaba bien la explicación como el video anterior