DOMANDA [Python] Creazione lista con range impostato dall'utente

Pubblicità

censa

Utente Attivo
Messaggi
535
Reazioni
91
Punteggio
52
ciao a tutti, oggi stavo provando a dilettarmi con pyhton e volevo provare a generare una lista con range impostato dall'utente..solo che nel momento dell'esecuzione mi si genra il seguente errore a cui non so rimediare (per ora)
inoltre, è possibile eseguire lo stesso procedimento senza utilizzare .append()?
questo è il codice:
 

Allegati

  • Cattura2.webp
    Cattura2.webp
    22.8 KB · Visualizzazioni: 139
  • Cattura.webp
    Cattura.webp
    10.4 KB · Visualizzazioni: 137
Una lista si rappresenta con [ ]. Come vedi nell’esecuzione ti viene detto che stai usando .append() con un intero e non con una lista
 
O una lista la definisci per intero da subito o la costruisci a partire dalla lista vuota aggiungendo elementi; es. per lista di interi
Python:
lista = [] #lista vuota
n = int(input("Numero di elementi? -> "))
for i in range(n):
    k = int(input("Elemento %d ? -> " % (i)))
    lista.append(k)
print(lista)
s=input("Premi <INVIO> per terminare.")
 
Prima di tutto un appunto, quando tu scrivi
Python:
for i in range(N)
non devi incrementare il contatore a ogni iterazione, in quanto viene già fatto dal for.

Ci sono poi diversi modi per definire una lista. Se vuoi semplicemente una lista di lunghezza N contenente lo stesso valore V ripetuto, puoi usare la scrittura
Python:
L = [V]*N
#esempio
>>> [0]*5
[0, 0, 0, 0, 0]
Per qualcosa di più elaborato, piuttosto che usare append, è meglio ricorrere a una "pythonic form" tipica di questo linguaggio. Nel tuo caso specifico puoi scrivere:
Python:
lista = [int(input()) for i in range(lunghezza)]
#ma visto che del "contatore" i non te ne fai niente, puoi anche scrivere
lista = [int(input()) for _ in range(lunghezza)]
In generale, gran parte dei cicli iterativi del tipo
Python:
lista = [ ]
for i in R:
   lista.append(fai_qualcosa(i))
possono essere riscritti come
Python:
lista = [fai_qualcosa(i) for i in R]
Il costrutto completo ammette ulteriori varianti, utile quando si vuole verificare una condizione sul valore iterato (quindi non un semplice contatore diversamente dal tuo caso):
Python:
#Dato un oggetto iterabile i cui elementi sono numeri interi, ricopia in "lista" solo i valori pari
lista = [ ]
for i in R:
   if i%2 == 0:
       lista.append(i)

#può essere riscritto come:
lista = [i for i in R if i%2==0]

E la flessibilità continuerebbe ancora... ma lascio il divertimento a te :D
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top