Strumenti Utente

Strumenti Sito


definire_una_funzione_in_python

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
definire_una_funzione_in_python [2021/05/20 07:21]
127.0.0.1 external edit
definire_una_funzione_in_python [2021/10/29 21:19] (versione attuale)
deleteme versione precedente ripristinata (2021/06/03 07:51)
Linea 2: Linea 2:
  
 Immaginiamo, dato un testo, di voler trovere quale sia la parola-tipo con rango di frequenza 5. Possiamo creare una "lista di liste", ossia una lista che contiene una serie di liste, ciascuna delle quali contiene a sua volta il numero di occorrenze di una parola tipo e la parola tipo. Immaginiamo, dato un testo, di voler trovere quale sia la parola-tipo con rango di frequenza 5. Possiamo creare una "lista di liste", ossia una lista che contiene una serie di liste, ciascuna delle quali contiene a sua volta il numero di occorrenze di una parola tipo e la parola tipo.
-<code python 1>+<code python>
 #creazione del testo dal corpus LDT #creazione del testo dal corpus LDT
 import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
-parole=ET.parse('Testi/ldt-1.5.xml').getroot().findall('.//word')+parole=ET.parse('testi/ldt-1.5.xml').getroot().findall('.//word')
 testo=[i.attrib['form'].lower() for i in parole] testo=[i.attrib['form'].lower() for i in parole]
  
Linea 13: Linea 13:
  
 #stampa il 2° elemento (forma della parola) contenuto nel 5° elemento contenuto nella 'lista di liste' #stampa il 2° elemento (forma della parola) contenuto nel 5° elemento contenuto nella 'lista di liste'
-print freq_parole[5-1][2-1]  #l'aggiunta di -1 è necessaria perché gli indici partono da 0+print(freq_parole[5-1][2-1] #l'aggiunta di -1 è necessaria perché gli indici partono da 0
  
 </code> </code>
 Lo stesso procedimento si può riscrivere sotto forma di funzione con il comando //def//, in modo da poter essere poi applicato ad altri testi e con altri numeri di rango. Nel codice seguente, all'interno della definizione della funzione trovaparola, //t// e //r// rappresentano rispettivamente il testo, che deve essere dato in forma di lista, e il rango. Lo stesso procedimento si può riscrivere sotto forma di funzione con il comando //def//, in modo da poter essere poi applicato ad altri testi e con altri numeri di rango. Nel codice seguente, all'interno della definizione della funzione trovaparola, //t// e //r// rappresentano rispettivamente il testo, che deve essere dato in forma di lista, e il rango.
-<code python 1>+<code python>
 def trovaparola(t,r): #tra parentesi sono scritte le variabili in input def trovaparola(t,r): #tra parentesi sono scritte le variabili in input
     fp=[[t.count(i), i] for i in set(t)]     fp=[[t.count(i), i] for i in set(t)]
Linea 25: Linea 25:
  
 Una volta definita la funzione, per un qualsiasi testo in forma di lista basterà scrivere quanto segue per visualizzare la parola cercata: Una volta definita la funzione, per un qualsiasi testo in forma di lista basterà scrivere quanto segue per visualizzare la parola cercata:
-<code python 1+<code python> 
-print trovaparola(testo,5)+print(trovaparola(testo,5))
 </code> </code>
 Se può essere scritta in una sola riga (come accade nel nostro caso a patto che si usi //sorted// e non //sort()// per ordinare la lista), la funzione può essere definita in alternativa attraverso il comando //lambda//. Se può essere scritta in una sola riga (come accade nel nostro caso a patto che si usi //sorted// e non //sort()// per ordinare la lista), la funzione può essere definita in alternativa attraverso il comando //lambda//.
-<code python 1>+<code python>
 trovaparolabis = lambda t, r: sorted([[t.count(i), i] for i in set(t)], reverse=True)[r-1][2-1] trovaparolabis = lambda t, r: sorted([[t.count(i), i] for i in set(t)], reverse=True)[r-1][2-1]
 +</code>
 +----
 +In un unico script:
 +<code python es_funzione.py>
 +def trovaparola(t,r): #tra parentesi sono scritte le variabili in input
 +    fp=[[t.count(i), i] for i in set(t)]
 +    fp=sorted(fp, reverse=True) #o, in alternativa: fp.sort(reverse=True)
 +    return fp[r-1][2-1] #il comando return definisce l'output della funzione
 +
 +trovaparolabis = lambda t, r: sorted([[t.count(i), i] for i in set(t)], reverse=True)[r-1][2-1]
 +
 +import xml.etree.ElementTree as ET
 +parole=ET.parse('testi/ldt-1.5.xml').getroot().findall('.//word')
 +testo=[i.attrib['form'].lower() for i in parole]
 +
 +print(trovaparola(testo,5))
 +print(trovaparolabis(testo,5))
 +
 </code> </code>
definire_una_funzione_in_python.1621495276.txt.gz · Ultima modifica: 2021/05/20 07:21 da 127.0.0.1