List comprehension

di il
5 risposte

List comprehension

Buona sera, stavo guardando la sintassi della lista in oggetto. Ho provato a far questo:

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
list1=[list1.append(x) for x in list2]

print(list1)

Dato che mi riportava sempre 

[None, None, None]

stavo per desistere. Ma non so perchè  Visual Studio Code l'ultima volta che ho provato mi ha stampato quello che mi aspettavo e cioè la list1 con l'aggiunta degli elementi dell'altra. Ora chiedo a voi: 

  1. se è sintatticamente giusto
  2. se non fosse proprio giusto da cosa è stato dato il risultato ‘sperato’ (che non riesco più a riprodurre).

Grazie in anticipo e scusate se magari può sembrare una cosa banale

Alex

5 Risposte

  • Re: List comprehension

    Perché non 

    list1 = list1 + list2

    ?

  • Re: List comprehension

    E' solo un modo per provare la sintassi delle List Comprehension che sintatticamente si pongono come:

    lista = [ espressione for elemento in ciclo iterabile if condizione == True]

    So bene che si può fare in molti modi diversi.

    Alex

  • Re: List comprehension

    Puoi fare

    list1 += [x for x in list2]

    Oppure una cosa del genere che forse ha più senso

    list1 += [x + 1 for x in range(3)]
    
  • Re: List comprehension

    11/11/2023 - magobin ha scritto:


    Ora chiedo a voi: 

    1. se è sintatticamente giusto
    2. se non fosse proprio giusto da cosa è stato dato il risultato ‘sperato’ (che non riesco più a riprodurre).

    Sintatticamente è giusto, ma non funziona perché stai accodando a una lista il valore di ritorno della funzione append() chiamata su ogni elemento dell'altra lista.

    Come vedrai nella documentazione, il metodo append() non ha un valore di ritorno, quindi stai aggiungendo un elemento alla volta alla lista 1, per poi assegnare alla stessa lista il valore risultante dall'espressione, che è un array dei tre valori di ritorno dell'append, ossia [None, None, None].

    Per la soluzione, vedi gli altri suggerimenti forniti. :)

  • Re: List comprehension

    Ok grazie a tutti

    Alex

Devi accedere o registrarti per scrivere nel forum
5 risposte