Profilo di Rosario Pettinato

Nome Rosario Pettinato
Indirizzo email [email protected]
AvatarAvatar utenti
Messaggi7
  • Re: Ordinamento Liste nascoste secondo indice fisso
    Forum >> Principianti
    Grazie come sempre per il tuo aiuto!
    L'utilizzo della funzione lambda come mi hai indicato risolve perfettamente il mio problema.

    :)
  • Ordinamento Liste nascoste secondo indice fisso
    Forum >> Principianti
    Salve a tutti.
    Mi trovo a dover gestire una lista con liste annidate di questo tipo:

    lista=[[nid1,x1,y1,z1,dist1],[nid2,x2,y2,z2,dist2],…]

    Vorrei ordinare lista in ordine crescente secondo dist, qualcuno di voi sa come farlo in modo semplice?

    Faccio un esempio:

    lista=[[1,0,0,0,0],[2,0,2,0,2],[3,0,6,0,6],[5,0,4,0,4]]

    lista_ordinata=[[1,0,0,0,0],[2,0,2,0,2],[5,0,4,0,4],[3,0,6,0,6]]

    lista_rinumerate=[[[1,0,0,0,0],[2,0,2,0,2],[3,0,4,0,4],[4,0,6,0,6]]

    Grazie in anticipo per le vostre risposte.
  • Re: [Aiuto!] Copiare contenuto file su lista riga per riga con ciclo for
    Forum >> Programmazione Python >> Files e Directory
    Grazie per la risposta.
    Seguirò sicuramente i tuo consigli ;)
  • Re: [Aiuto!] Copiare contenuto file su lista riga per riga con ciclo for
    Forum >> Programmazione Python >> Files e Directory
    nuzzopippo grazie di cuore per la tua dettagliata risposta!
    La qualità del mio sonno è migliorata notevolmente ma restano due cose che mi tormentano...

    ".append" era quello che faceva al caso mio!

    Sono riuscito così a salvare il contenuto di un file riga per riga con for nel seguente modo:
    new_list2=[]
    i=1
    with open("test3.txt") as test:
        for index in test:
            print("Riga %0i" %i+":", index, end="")
            i+=1
            new_list2.append(index)
    print("Questo è il contenuto di new_list2:", new_list2)
    print("new_list2 Type:", type(new_list2))
    print("\n")

    Risultato:
    Riga 1: Prima riga
    Riga 2: Seconda Riga
    Riga 3: Terza riga

    Questo è il contenuto di new_list2: ['Prima riga\n', 'Seconda Riga\n', 'Terza riga\n']


    new_list2 Type: <class 'list'>

    Domanda 1: non usare .readline o simili come sopra è "male"?

    Dato che non usare .readline mi lasciava qualche perplessità, ho provato a usarlo nel seguente modo ma il risultato mi ha confuso...
    new_list3=[]
    i=1
    with open("test3.txt") as test:
        for line in test:
            read=test.readline() 
            print("Riga %0i" %i+":", read, end="")
            i+=1
            new_list3.append(read)
    print("Questo è il contenuto di new_list3:", new_list3)
    print("new_list3 Type:", type(new_list3))
    print("\n")
    Risultato:

    Riga 1: Seconda Riga
    Riga 2: Questo è il contenuto di new_list3: ['Seconda Riga\n', '']
    new_list3 Type: <class 'list'>

    Domanda 2: Perché ottengo questo risultato?


    Grazie ancora per l'attenzione



    --- Ultima modifica di Rosario Pettinato in data 2021-12-15 17:23:08 ---
  • [Aiuto!] Copiare contenuto file su lista riga per riga con ciclo for
    Forum >> Programmazione Python >> Files e Directory
    Salve ha tutti!
    Per quanto non vedo una grande utilità nel copiare il contenuto di un file in una lista,
    la cosa non mi sta facendo dormire la notte...

    Se scrivo:

    test=open("test3.txt")
    new_list0=test.readline()
    new_list1=test.readline()
    new_list2=test.readline()
    test.close()
    print("\nnew_list con 3 redline():", new_list)
    print("new_list Type:", type(new_list))
    print("\n")

    riesco a copiare le prime tre stringhe del file test.txt in new_list, ed ad indicizzarle una ad una.
    Volendo rendere dinamico il codice precedente, ho provato ad usare un ciclo for nel seguente modo:
    new_list=[]
    i=0
    test=open("test3.txt")
    for line in test:
    new_list=test.readline()
    i=i+1
    test.close()
    print("\nnew_list con for:", new_list)

    oppure

    new_list=[]
    i=0
    test=open("test3.txt")
    for line in test:
    print("Linea",i+1,":",line)
    print("Linea",i+1,"Type:",type(line))
    new_list=line
    i=i+1
    test.close()
    print("\nnew_list con for:", new_list)

    o anche

    i=0
    j=0
    test=open("test3.txt")
    for line in test:
    print(i)
    i=i+1
    print("\ntest3.txt contiene ",i," stringhe")
    while j<i:
    print(j)
    new_listj=test.readline()
    j+=1
    test.close()
    print("\nnew_list con for:", new_list)

    ma in tutti i casi ottengo il seguente errore:

    new_list=test.readline()
    IndexError: list assignment index out of range

    Qualcuno saprebbe spiegarmi il perché è come scrivere correttamente questo codice?

    Usando .readlines() riesco ad ottenere il mio scopo correttamente ma quello che mi tormenta è come farlo leggendo il file riga per riga.

    *P.S. Postando la domanda, ho notato che le parentesi quadre con l'indice dopo new_list scompaiono dal mio testo quando posto la domanda... Se non le vedete, sappiate che ci sono

    Grazie in anticipo per le vostre risposte!


    --- Ultima modifica di Rosario Pettinato in data 2021-12-14 17:32:05 ---
  • Re: input e raw_input
    Forum >> Principianti
    Grazie! :)
    Era proprio quello che mi serviva sapere.



    --- Ultima modifica di anacron333 in data 2016-04-04 05:51:05 ---
  • input e raw_input
    Forum >> Principianti
    Io uso Python 2.7.x e mi sono posto il seguente quesito:
    Esiste in Python una soluzione che consenta di inserire, interi, decimali, o stringhe ed identificarne il tipo in un secondo momento?



    'input' mi concede l'immissione di interi e decimali ma mi restituisce un codice d'errore se provo ad immettere una stringa.


    'raw_input' invece, accetta qualsiasi tipo di immissione anche numerica, che però di fatto risulterà essere una stringa e quindi non mi sarà possibile operarvi come sui decimali('2'+'2'==22).




    In pratica io vorrei richiedere all'utente l'immissione di un numero intero ma, qualora l'utente dovesse digitare una lettera identificarla come tale e chiedergli nuovamente l'inserimento di un valore numerico senza generare un codice d'errore.

    Sapreste dirmi come fare?

    Grazie in anticipo ;)