Snippet in Python di uso comune

Snippet in Python di uso comune
Tempo di lettura: 6 minuti

In questo articolo ti presento dieci snippet in Python di uso comune.

Negli ultimi anni Python ha avuto un notevole aumento di nuovi utenti.

Una delle ragioni potrebbe essere che è semplice da imparare se confrontato con altri linguaggi di programmazione ad oggetti come Java, C++, C#, Javascript, infatti sempre più persone intenzionate avvicinarsi alla programmazione stanno optando per Python.

Un’altra ragione della popolarità di Python è il suo utilizzo su larga scala in tutti i campi dell’IT industry, della data science, machine learning, automation, web scraping, inteligenza artificiale, cyber-security, cloud computing, e tanto altro.

Secondo uno recente sondaggio tra gli sviluppatori, Python è attualmente il secondo linguaggio più amato dopo Javascript e si prevede un ulteriore aumento di seguaci nel prossimo anno.

La richiesta di programmatori in Python è notevolmente aumentata, soprattutto negli ultimi mesi, e quindi imparare Python potrebbe dare delle ottime possibilità alla tua carriera professionale.

Per questo se sei uno sviluppatore Python, questo articolo è sicuramente per te, troverai degli snippet in Python di uso comune, corredati da una breve ed incisiva spiegazione. Ho selezionato per te 10 snippet che rispondo ad esigenze quotidiane nella vita di uno sviluppatore. Ti mostrerò problemi che si presentano regolarmente nella programmazione in Python e come risolverli utilizzando gli snippet descritti qui.

1. List Comprehension con if ed else

Le list comprehension in Python sono super utili e super potenti. Riducono la scrittura di codice e lo rendono più leggibile. Nel codice seguente si verificano multipli di 6, e si moltiplicano per 2 e 3 utilizzando condizioni, if ed else, all’interno della lista.


my_list = ['Multiple of 6' if i % 6 == 0
    else 'Multiple of 2' if i % 2 == 0
    else 'Multiple of 3' if i % 3 == 0
    else i for i in range(1, 20)]
print(my_list)


Nota che occorre utilizzare entrambe le parole chiave if ed else, altrimenti viene generato un SyntaxError. Non è possibile usare l’elif nella list comprehension.

Output:

[1,
'Multiple of 2',
'Multiple of 3',
'Multiple of 2',
5,
'Multiple of 6',
7,
'Multiple of 2',
'Multiple of 3',
'Multiple of 2',
11,
'Multiple of 6',
13,
'Multiple of 2',
'Multiple of 3',
'Multiple of 2',
17,
'Multiple of 6',
19]

 

2. Unione di due dizionari

Potrebbe creare confusione pensare di unire due dizionari o accodare gli elementi di uno ad un altro. Ma sorprendentemente c’è più di un metodo per farlo. Nel codice che segue ci sono tre metodi.

Il primo metodo usa il dictionary unpacking col quale i due dizionari vengono scomposti entrambi in un unico risultante.

Nel secondo metodo vengono copiati gli elementi del primo nel nuovo e poi vengono accodati gli elementi del secondo nello stesso result.

Il terzo metodo è un’implementazione molto semplice utilizza la dictionary comprehesion, molto simile a quella utilizzata sopra per la list comprehension.


my_dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
my_dict2 = {'d' : 4, 'e' : 5, 'f' : 6}

# Method 1
result = { **my_dict1, **my_dict2}
print(result)

# Method 2
result = my_dict1.copy()
result.update(my_dict2)
print(result)

# Method 3
result = {key: value for d in (my_dict1, my_dict2) for key, value in d.items()}
print(result)


Output:

{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5, ‘f’: 6}

{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5, ‘f’: 6}

{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5, ‘f’: 6}

3. Gestione di file

La gestione dei file è utilizzata in vari programmi scritti in Python, soprattutto quelli relativi ai dati per i quali occorre leggere una grande quantità di dati, ad esempio molti comma-separated values – valori separati da virgola. Il file handling comprende varie operazioni come aprire un file, leggere, scrivere e chiudere il file.


# Open a file
f = open('filename.txt')

# Read from a file
f = open('filename.txt', 'r')

# To read the whole file
print(f.read())

# To read single line
print(f.readline())

# Write to a file
f = open('filename.txt', 'w')
f.write('Writing into a file \n')

# Closing a file
f.close()

4. Calcolo del tempo di esecuzione

Spesso diventa necessario ottimizzare il codice ed analizzare le metriche delle prestazioni. In questi casi la libreria time può essere davvero utile. Con il suo utilizzo è possibile misurare il tempo di esecuzione del codice ed ottimizzarlo. È anche possibile confrontare il tempo di esecuzione di due pezzi di codice che elaborano lo stesso lavoro in modo da scegliere il più performante.


import time

start_time = time.time()

# printing all even numbers till 20
for i in range(20):
    if i % 2 == 0:
        print(i, end = " ")

end_time = time.time()
time_taken = end_time - start_time
print("\nTime: ", time_taken)

Output:

0 2 4 6 8 10 12 14 16 18

Time: 2.47955322265625e-05

5. Ordinare una lista di dizionari

Ordinare una lista di dizionari può suonare strano sulle prime ma è una operazione che si fa di frequente. È possibile utilizzare due approcci, diversi,  ma anche simili, allo stesso tempo. È possibile usare le funzioni built-in sorted() o sort() che lavorano sulle liste, utilizzando la funzione lambda al loro interno, in modo da ordinare il dizionario in base alla chiave id.

Nel primo metodo, il tipo ritornato – return type – è None se le modifiche sono ancora in corso.

Nel secondo metodo viene restituita una nuova lista di dizionari ordinati.


person = [
    {
        'name' : 'alice',
        'age' : 22,
        'id' : 92345
    },
    {
        'name' : 'bob',
        'age' : 24,
        'id' : 52353
    },
    {
        'name' : 'tom',
        'age' : 23,
        'id' : 62257
    }
]

# Method 1
person.sort(key=lambda item: item.get("id"))
print(person)

# Method 2
person = sorted(person, key=lambda item: item.get("id"))
print(person)

Output:

[{‘name’: ‘bob’, ‘age’: 24, ‘id’: 52353}, {‘name’: ‘tom’, ‘age’: 23, ‘id’: 62257}, {‘name’: ‘alice’, ‘age’: 22, ‘id’: 92345}]

[{‘name’: ‘bob’, ‘age’: 24, ‘id’: 52353}, {‘name’: ‘tom’, ‘age’: 23, ‘id’: 62257}, {‘name’: ‘alice’, ‘age’: 22, ‘id’: 92345}]

6. Trovare l’elemento con la frequenza più alta

È possibile trovare l’elemento, che più volte viene valutato, passando la chiave come conteggio degli elementi, ovvero il numero di volte che compare.


my_list = [8,4,8,2,2,5,8,0,3,5,2,5,8,9,3,8]
print("Most frequent item:", max(set(my_list), key=my_list.count))

Output:

Most frequent item: 8

7. Gestione degli errori

La gestione degli errori è gestita da try-catch (e finally). Viene utilizzata per eliminare ogni possibilità di arresto improvviso durante l’esecuzione. L’istruzione che può causare un errore viene inserita in un blocco try, seguito da un blocco except che cattura l’eccezione (se presente), quindi segue il blocco “finally“, opzionale, che viene eseguito indipendentemente da tutto.


num1, num2 = 2,0
try:
    print(num1 / num2)
except ZeroDivisionError:
    print("Exception! Division by Zero not permitted.")
finally:
    print("Finally block.")

Output:

Exception! Division by Zero not permitted.

Finally block.

8. Ricerca di sotto stringa in una lista di stringhe

Questo è un caso molto comune. Se si vuole trovare una substring all’interno degli elementi di una lista di stringhe (può essere applicato anche alla singola stringa non solo alle liste), è possibile utilizzare il metodo find() che ritorna -1 se il valore non è presente, o la posizione della prima occorrenza, se presente.

Il secondo metodo utilizza l’operatore in per verificare la corrispondenza della substring all’interno della stringa.


records = [
    "Vani Gupta, University of Hyderabad",
    "Elon Musk, Tesla",
    "Bill Gates, Microsoft",
    "Steve Jobs, Apple"
]

# Method 1
name = "Vani"
for record in records:
    if record.find(name):
        print(record)

# Method 2
name = "Musk"
for record in records:
    if name in record:
        print(record)

Output:

Vani Gupta, University of Hyderabad

Elon Musk, Tesla

 

9. Formattazione delle stringhe

La formattazione di stringhe è usata per formattare o modificare le stringhe. Può essere fatta in modi diversi. Di seguito quattro metodi comuni.

Nel primo metodo, è usata la concatenazione delle stringe con l’utilizzo dell’operatore ‘+’  tra una variabile e ed una stringa.

Nel secondo metodo è usato f-strings, la variabile è scritta fra parentesi graffe e viene sostituita a runtime.

Il terzo metodo è molto simile al precedente con l’utilizzo di ‘%s’, dove ‘s’ sta per tipo stringa, ma oramai meno utilizzato in favore del metodo successivo.

Il quarto metodo, da preferire agli altri, utilizza la funzione format() per sostituire alla coppia di parentesi graffe, il contenuto della variabile, passata come parametro alla funzione format(), possono essere passata più variabili in base all’ordine di apparizione.

 

language = "Python" 

# Method 1
print(language + " is my favourite programming language.")

# Method 2
print(f"I code in {language}")

# Method 3
print("%s is very easy to learn." % (language))

# Method 4
print("I like the {} programming language.".format(language))

Output:

Python is my favourite programming language.

I code in Python

Python is very easy to learn.

I like the Python programming language.

 

10. Semplificando una lista

Per semplificare o normalizzare una lista che contiene altre liste di lunghezza e numerazione variabile, è possibile utilizzare il metodo append() ed exentds() e continuare ad aggiungere gli elementi ad una nuova lista creata.

La differenza fra i due metodi è che append() aggiunge una singola variabile alla fine della lista aumentando la lunghezza della lista di uno, mentre extend() aggiunge tutti gli elementi  della lista passata, come un unico argomento, alla fine della lista iniziale.


ugly_list = [10,12,36,[41,59,63],[77],81,93]
flat = []
for i in ugly_list:
    if isinstance(i, list): flat.extend(i)
    else: flat.append(i)
print(flat)

Output:

[10, 12, 36, 41, 59, 63, 77, 81, 93]

 

Questi sono degli snippet di uso comune nella programmazione in Python. Spero che questi esempi possano tornare utili.

Fonte: geeksforgeeks.org

 

 

 

Un commento su “Snippet in Python di uso comune”

Rispondi

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: