For in con le liste in Python

For in con le liste in Python

In questa lezione farò alcuni esempi di utilizzo del ciclo for … in sulle liste in Python.

For in con le liste in Python

In questo primo esempio dobbiamo stampare una lista in ordine inverso utilizzando il ciclo for in.

Questo problema può avere diverse soluzioni, ne analizzeremo alcune.

Prima soluzione – For in con le liste in Python

La prima soluzione fa uso della funzione reversed(), per invertire una lista, la seconda che fa uso della lunghezza della lista, la funzione len().

Cominciamo analizzando in dettaglio la prima soluzione.

Innanzitutto creiamo una lista di elementi: numbers = [1, 2, 3, 4, 5], dopo utilizziamo la funzione esistente reversed() per invertire gli elementi di una lista. Dunque stampiamo gli elementi invertiti utilizzando il ciclo for in Python sulla lista.

Di seguito ecco una possibile soluzione:

numbers = [1, 2, 3, 4, 5]
numbers_reversed = reversed(numbers)
for number in numbers_reversed:
    print(number)

Seconda soluzione – For in con le liste in Python

Realizziamo adesso una seconda soluzione, calcolando la lunghezza della lista a cui sottrarremo uno. In questo modo troviamo l’indice dell’ultimo elemento della lista. Poi utilizzeremo il ciclo for opportuno.

Ecco il codice completo della seconda soluzione al nostro algoritmo che utilizza il for sulle liste in Python:

numbers = [1, 2, 3, 4, 5]
n_numbers = len(numbers) - 1
for i in range (n_numbers, -1, -1):
    print(numbers[i])

For in con le liste in Python

Propongo un secondo esempio dove dobbiamo calcolare il cubo di tutti gli elementi di una lista.

Creiamo dunque una lista di numeri interi. Con il ciclo for calcoliamo il cubo di ciascun elemento e stampiamo la lista. Utilizziamo la funzione len per determinare la lunghezza della lista. Infine cicliamo la lista modificata per stampare gli elementi.

Ecco il codice completo

numbers = [1, 2, 3, 4, 5]

for i in range(len(numbers)):
    numbers[i] = numbers[i] * numbers[i] * numbers[i]

for number in numbers:
    print(number)

Una seconda soluzione prevede semplicemente l’uso della funzione in Python per calcolare le potenze di un numero, la funzione pow().

Nel nostro caso ci servirà elevare al cubo. Poi cicliamo sulla lista con il ciclo for in Python.

Migliora le tue capacità di programmazione Python seguendo i nostri corsi in diretta!

corsi Python

Ecco il codice di esempio completo:

numbers = [1, 2, 3, 4, 5]

for i in range(len(numbers)):
    numbers[i] = pow(numbers[i],3)

for number in numbers:
    print(number)

Conclusioni

Da questa lezione possiamo trarre alcune conclusioni utili:

  1. Flessibilità di utilizzo: Il ciclo for in Python offre un modo flessibile per iterare attraverso gli elementi di una lista ed eseguire operazioni su di essi.
  2. Diverse soluzioni per gli stessi problemi: Come dimostrato nei vari esempi, ci sono spesso diverse soluzioni per risolvere lo stesso problema. È importante conoscere le varie opzioni disponibili e scegliere quella più adatta alle proprie esigenze.
  3. Utilizzo delle funzioni built-in: Python fornisce diverse funzioni built-in, come reversed() e len(), che semplificano la manipolazione delle liste. Saperle utilizzare efficacemente può semplificare il codice e renderlo più leggibile.
  4. Sperimentazione e pratica: La pratica è fondamentale per padroneggiare l’utilizzo del ciclo for con le liste. Sperimentare con diversi esempi e esercizi aiuta a comprendere appieno le potenzialità di questo costrutto e a diventare più abili nel suo utilizzo.

In conclusione, l’utilizzo del ciclo for con le liste in Python è un’abilità fondamentale per qualsiasi programmatore Python. Con una comprensione approfondita di come utilizzare il ciclo for in modo efficace e creativo, è possibile affrontare una vasta gamma di problemi di programmazione con sicurezza e precisione. Continuare a esplorare e praticare queste tecniche è essenziale per migliorare le proprie capacità di programmazione in Python.

Questi sono solo alcuni semplici esempi di utilizzo del ciclo for in sulle liste in Python, nelle prossime lezioni sviluppermo tanti altri esempi.

Alcuni link utili

Corso in diretta su Python

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

Install Python

Install Python

Install Python is very simple and we will see it in detail on all systems. But before installation let’s make a brief introduction to this amazing programming language

Python is a language that adapts to multiple fields, such as websites, computer science, and artificial intelligence. During this tutorial we will therefore explore the various areas of expertise.

In this lesson we will see how to install Python. First let’s make a brief introduction of this fantastic programming language.

It is a language that supports object-oriented programming and is being addressed more and more, even in universities.

There are numerous frameworks developed for Python and often represent optimal solutions for quickly building applications. Among these we will deal with Flask and Django, two important open-source web frameworks, useful for creating simple internet and e-commerce sites.

I will also mention Plone, a CMS (Content Management System) used to manage a website with ease.

This last part will therefore be useful for those who want to work with these tools.

How to install Python?

To install, go to the official website: https://www.python.org/downloads/ and download the version suitable for your operating system.

Windows

First we show the installation of Python in a Windows environment.

As soon as the installation starts, you will be asked for some options, make sure you select the Add Python 3.X to PATH item.

But, if you forget to do so, don’t worry, you can still change this option by going to: control panel -> system-> advanced system settings -> environment variable.

As well as from the pictures shown below.

panel system
python install on windows
environment variables

Then click on the edit button and add the path specifying the appropriate path.

Alternatively, you can launch the executable again, click on modify and add the check mark on Add Python to environment variables.

advanced options python

The Python installation is complete

Working in interactive mode

After installing Python on your PC, you can start working in interactive mode or creating scripts that can then be executed.

The interactive mode allows you to interact directly with the interpreter, this is only convenient at the beginning to learn how to do some small tests.

To work in this mode, you need to start the IDLE. IDLE is software that allows both to work interactively and to create scripts.

Starting it, the interactive interpreter will be presented with the cursor positioned after the symbol: >>> (triple major sign), the Python shell.

shell python

You can consult information about the language specifications by entering the help() command.

After entering the help, you can request, for example, information on the individual instructions of the language.

Then try to request the if statement, you will see information on the use of this statement.

help() python

To exit the help you need to type quit.

You can also avoid entering the help by typing, after the >>> symbol, the word help followed by the required term inserted in quotes inside the round brackets.

For example help (‘if’).

Well in this guide we have seen the installation of Python, in the next tutorial we will start creating our first Python program.

Useful links

Python tutorial

1 – Introduzione al linguaggio Python

Algoritmo Bubble Sort Python

Algoritmo Bubble Sort Python

L’algoritmo bubble sort in Python è l’argomento di questa lezione. Il bubble sort è un algoritmo di ordinamento molto semplice da implementare, ma dobbiamo dire che è anche poco efficiente.

Infatti il bubble sort è utilizzato principalmente in ambito didattico per far apprendere le logiche e le basi della programmazione.

Il funzionamento del bubble sort è questo:

Si confrontano gli elementi vicini tra di loro, portando l’elemento maggiore in ultima posizione durante la prima “passata” (eseguendo n-1 confronti), poi il secondo massimo in penultima posizione e così via finché l’array non è ordinato.

Quindi ad ogni passaggio si inserisce nell’elenco il valore successivo più grande al posto giusto.

La complessità dell’algoritmo è O(n2), sia nel caso peggiore, sia nel caso migliore.

Implementazione dell’algoritmo bubble sort in Python

Implementiamo la soluzione all’algortimo bubble sort in Python in maniera diversa rispetto agli altri linguaggi di programmazione. Questo perchè per lo scambio delle variabili in Python non è necessaria una variabile di appoggio temporanea.

In questa guida tratto l’argomento dello scambio delle variabili. Come scambiare il valore delle variabili

Dunque non sarà necessaria questa operazione:


temp = a;
a = b;
b = temp;

Ma basterà semplicemente scrivere:


a,b = b,a

Questa procedura, detta assegnazione simultanea, mi consente di snellire l’algoritmo bubble sort in Python.



def bubbleSort(array):
    for j in range(0, len(array)-1):
        for i in range(0, len(array)-1):
            if array[i]>array[i+1]:
                array[i], array[i+1] = array[i+1], array[i]

array_numbers = [54,26,93,17,77,31,44,55,20]
bubbleSort(array_numbers)

print(array_numbers)

L’algoritmo è molto semplice, basandosi sul confronto di elementi adiacenti.

Ma se l’algoritmo fosse ordinato? In ogni caso dovrei ripetere il ciclo esterno sempre n-1 volte. Possiamo pensare allora a fare delle ottimizzazioni all’algoritmo proposto.

Ottimizzazione dell’algoritmo bubble sort in Python – ordinamento per scambio con sentinella

Possiamo pensare di interrompere il ciclo for esterno, con un break, se al termine del primo ciclo interno non si è fatto alcuno scambio. Per questo scopo utilizziamo una variabile di appoggio chiamata flag, che inizializziamo a 0. Dopo, cambiamo il valore di questa variabile se nel ciclo interno si effettua almeno uno scambio. In alternativa a 0 ed 1 posso usare una variabile booleana.

Ecco il codice di esempio:


def bubbleSort(array):
    for j in range(0, len(array)-1):
      flag = False
      for i in range(0, len(array)-1):
        if array[i]>array[i+1]:
            array[i], array[i+1] = array[i+1], array[i]
            flag = True
      if not(flag):
        break

array_numbers = [54,26,93,17,77,31,44,55,20]
bubbleSort(array_numbers)

print(array_numbers)

Seconda ottimizzazione dell’algoritmo bubble sort in Python

Possiamo ottimizzare l’algoritmo bubble sort riflettendo sul fatto che ad ogni incremento di j, almeno gli ultimi j+1 elementi sono già stati ordinati. Questo in considerazione del fatto che ad ogni iterazione, l’elemento più grande è stato spostato verso destra.

Quindi ad ogni iterazione accorciamo il ciclo dei confronti. Infatti all’n-esima iterazione si può fare a meno di toccare gli ultimi n-1 elementi che ormai sono nella loro posizione definitiva. Dunque decrementiamo n di uno ad ogni iterazione (- -n), in modo da diminuire di 1, di volta in volta, il numero dei confronti effettuati.

Ecco dunque il codice completo dell’algoritmo ottimizzato:


def bubbleSort(array):
    len_array = len(array)
    for j in range(0, len_array-1):
      flag = False
      for i in range(0, len_array-1):
        if array[i]>array[i+1]:
            array[i], array[i+1] = array[i+1], array[i]
            flag = True
      len_array = len_array - 1
      if not(flag):
        break

array_numbers = [54,26,93,17,77,31,44,55,20]
bubbleSort(array_numbers)

Terza ottimizzazione dell’algoritmo bubble sort in Python

Un’ulteriore ottimizzazione all’algoritmo bubble sort in Python può essere sviluppata in considerazione del fatto che il ciclo interno si interrompe proprio dove è avvenuto lo scambio. Quindi, dopo ogni iterazione più elementi si trovano nella posizione definitiva e si può evitare di ordinarli nuovamente.

Occorre memorizzare la posizione ( i+1) dell’ultimo scambio effettuato in una variabile che chiameremo ad esempio pos. Dopo assegniamo alla lunghezza dell’array il valore di pos.

Ecco una possibile implementazione dell’algoritmo ottimizzato:


def bubbleSort(array):
    len_array = len(array)
    for j in range(0, len_array-1):
      flag = False
      for i in range(0, len_array-1):
        if array[i]>array[i+1]:
            array[i], array[i+1] = array[i+1], array[i]
            flag = True
            pos = i + 1
      if not(flag):
        break
      else: 
        len_array = pos
        
    print(i,j)

array_numbers = [54,26,93,17,77,31,44,55,20]
bubbleSort(array_numbers)

print(array_numbers)

Conclusioni

In questa lezione ho realizzato alcune implementazioni dell’algoritmo bubble sort in Python, cercando di ottimizzare un algoritmo semplice da implementare, ma lento. Nelle prossime lezioni spiegherò altri algoritmi di ordinamento.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

Assignment Operators Python

Assignment Operators Python

Assignment operators in Python, and in other language programming, are used to assign values ​​to variables.

For example, if we indicate a = 5 and b = 3 we are assigning the value 5 to the variable a and the value 3 to the variable b.

But let’s see in detail what other assignment operators exist:

Assignment Operators Python = assign

Example:

a = 5 assigns the value 5 to the variable a on the left (ie what is to the right of the equal.)

Another example could be a = b + c where to a this time we assign the sum b + c.

Assignment Operators Python += add and assign

Assigns the sum between it and the right operand to the left operand.

For example:

a += 2 is equivalent to doing a = a + 2, so it assigns to the variable a on the left the value of a (we always suppose a = 5) added to 2. So we will get a = 7.

Assignment Operators Python -= subtract and assign

Assigns the difference between it and the right operand to the left operand.

Ex:

a – = 2 is equivalent to doing a = a-2, so it assigns to the variable a on the left the value of a (we always assume a = 5) minus 2. So we will get a = 3.

Assignment Operators Python *= multiply and assign

Assigns the product between it and the right operand to the left operand.

An example:

a * = 2 is equivalent to doing a = a * 2, so it assigns to the variable a on the left the value of a (let’s always suppose a = 5) multiplied by 2. So we will get a = 10.

Assignment Operators Python /= divide and assign

Assigns the real division between it and the right operand to the left operand.

As for example:

a /= 2 is equivalent to doing a = a / 2, so it assigns to the variable a on the left the value of a (we always assume a = 5) divided by 2. So we will get a = 2.5.

Assignment Operators Python //= divide and assign

Assign the rounded division between it and the right operand to the left operand.

Eg: a //= 2 is equivalent to doing a = a // 2, so it assigns the value of a to the variable a on the left (we always assume a = 5) divided by 2 rounded to the integer. So we will get a = 2.

Assignment Operators Python %= calculate the remainder and assign

Assigns to the left operand the remainder obtained from the division between it and the right operand.

Example:

a%= 2 is equivalent to doing a = a% 2, so it assigns the value of a to the variable a on the left (we always assume a = 5) divided by 2 rounded to the integer. So we will get a = 1.

Assignment Operators Python **= calculate the power and assign

Assigns to the left operand the result of exponentiation of it as the base and exponent of the right operand.

Example:

a **= 2 is equivalent to doing a=a2, so it assigns to the variable a on the left the value of a (we always suppose a = 5) raised to 2. So we will get a = 25.

Try these simple examples interactively to familiarize yourself with the language.

Some exercises

Some exercises on assignment operators in Python


a = 10
b = 15 + a
c = b * 2
c += 1

print(a,b,c)

Other exercises



a = b = c = 10

a *= 10
b **= 2
c //= 4

print(a,b,c)

In this lesson we have studied the assignment operators in Python and have seen many exercises and practical examples.

Useful links

Python tutorial

Python Compiler

Install Python

Variables

Python max()

Python max()

In this lesson we will look for the maximum value of a list in Python either by using the Python max() function, or by building our own algorithm.

Exercise – Python max()

Populate a list with 20 numbers of your choice. After entering, view all the elements of the list with their index.
Then find the maximum value among those entered in the list.

First method with Python max()

In this first method, we populate a list of numbers. Next we simply use the max () function to determine the maximum of the list.

Here is the code:


number = [13, 22, 18, 3, 1, 9]
n_max = max(number);
print("The largest number is:", n_max)

Second method without Python max()

In this second method we will create a custom algorithm.

First we initialize the list of name numbers to the empty list. Then we insert as input 20 numbers of your choice in the list and display them using another for loop.

Take care to view the elements with their index using another for loop, as you are asked to view the list after entering the numbers.

N.B. The entered values ​​can be both positive and negative.

So the numbers can also be all negative, for example. This is why the intuition of setting the maximum to zero is wrong.

In this regard, let’s make an example by setting maximum = 0

And we put the numbers in the list:

-5, -12, -1, -8, -15

At the end, the maximum value will be 0, as the comparisons made did not allow to replace this value.

This is clearly a mistake!

Then we need to initialize the maximum value to the first element of the list and then with a for loop we compare the other elements with the maximum value.

If the found element is greater than the maximum value then it is replaced, otherwise the maximum will be the first element in the list.

Here is the code:


n = 5
numbers = []

for i in range(n):
    number = int(input('Insert a number: '))
    numbers.append(number)

n_max = numbers[0]
for i in range(n):
    if numbers[i] > n_max:
        n_max = numbers[i]

print('The largest number is: ', n_max)

In this last example we did not use the Python max() function

Useful links

Python tutorial

1 – Introduzione al linguaggio Python