Home > Software design >  delete an element of a tuple within a list [Python, Tuples, Lists] (SOLVED)
delete an element of a tuple within a list [Python, Tuples, Lists] (SOLVED)

Time:11-16

I am creating a menu for a billing program with tuples inside lists, how would you do to delete a data requested by the user deleting all its values?

menu = """
(1) Añadir Cliente
(2) Eliminar Cliente
(3) Añadir Factura
(4) Procesar facturacion del mes
(5) Listar todos los clientes
(6) Terminar
"""
lista_nom =[]
list_borra2 = []
ventas = []

while True:
    print(menu)
    opc = input("Escriba una opcion: ")
    opc = int(opc)
    if opc == 1:
        nombre = input("Escribe el nombre del cliente: ")
        cif = input('Escribe el cif de cliente: ')
        direccion = input("Escribe el direccion de cliente: ")
        lista_nom1 = (nombre,cif,direccion)
        lista_nom.append(lista_nom1)
        print(lista_nom)
        #print(lista_nom1)mismo dato en tupla


    if opc == 2:
        nombre = input('Escriba el nombre del cliente a borrar: ')
        for nombre in lista_nom[0]:
            lista_nom.remove[(nombre)] 
        else:
            print('No existe el cliente con el nombre', nombre)
 
        # for nom in range(len(lista_nom)):
        #     for eli in range(len(lista_nom[nom])):
        #         if lista_nom[nom][eli][0] == nombre:
        #             del lista_nom[nom:nom 1]
        #             print(lista_nom)


I have tried to access the element with nested for but it simply does nothing.

try to create a new list to store the deleted data and then install it in the first list with the main values to be deleted

       # list_borra2.append(nombre)
        # for nom in range(len(lista_nom)):
        #     for eli in range(len(lista_nom[nom])):
        #         if lista_nom[nom][eli][0] == nombre:
        #             del lista_nom[nom:nom 1]
        #             print(lista_nom)


        #     lista_nom.remove(nombre)
        #     list_borra2  = lista_nom
        # # print(list_borra2)
        # print(list_borra2)

CodePudding user response:

Instead of deleting an element, what is not possible inside of tuples, you could define a new tuple by doing

nom_remove = lista_nom[:nom]   lista_nom[(nom 1):]

CodePudding user response:

At the end I resolved the problem with this, like the other guy tell me the tuples are immutable so I need to go inside the list and i can access to the tuple:

    if opc == 2:
        nombre = input('Escriba el nombre del cliente a borrar: ')
        vivo = 0
        for kilo in ventas:
            vivo = ventas[kilo].count(nombre)
        if vivo == 0:
            for nom in range(len(lista_nom)):
                if lista_nom[nom].count(nombre)>0:
                    del lista_nom[nom:nom 1]
                    print(lista_nom)
                    break
  • Related