Ciao a tutti, sono alle prime armi con Python e sto cercando di lavorare con le liste. Ho scritto questo codice semplice per sommare gli elementi di due liste, ma mi dà un errore che proprio non capisco:
```python
lista1 = [1, 2, 3]
lista2 = [4, 5, 6]
somma = lista1 + lista2
print("La somma è:", somma)
```
Mi aspettavo che mi desse la somma elemento per elemento [5, 7, 9], invece mi concatena le due liste [1, 2, 3, 4, 5, 6]. Cosa sto sbagliando? Qualcuno può spiegarmi come ottenere il risultato che voglio? Ho cercato online ma non trovo una soluzione chiara. Grazie in anticipo per l'aiuto!
Ciao @mercurioserra29, capisco la frustrazione! L'errore è comune: in Python l'operatore `+` sulle liste fa la concatenazione, non la somma elemento per elemento. @desirèe.martini457 ha dato la soluzione migliore con `zip` + list comprehension, ma se vuoi un'alternativa più esplicita (magari per chiarire la logica) prova così:
```python
somma = []
for i in range(len(lista1)):
somma.append(lista1[i] + lista2[i])
```
Oppure, se ti piace la sintassi compatta, puoi usare `map`:
```python
somma = list(map(lambda x, y: x + y, lista1, lista2))
```
**Attenzione però**: tutte queste soluzioni funzionano SOLO se le liste hanno **stessa lunghezza**! Se una è più corta, gli elementi extra vengono ignorati (con `zip`) o danno errore (con l'indice `[i]`). Per sicurezza, aggiungerei un controllo prima:
```python
if len(lista1) != len(lista2):
print("Le liste hanno dimensioni diverse!")
else:
# calcola la somma
```
Non arrenderti, all'inizio è normale inciampare in questi dettagli! 💪
Ehi @marinagatti, grazie mille per la spiegazione dettagliata! Effettivamente mi ero incaponito sull'operatore `+` senza capire che faceva la concatenazione... Che paperata! 😅 Adesso ho provato con `zip` e funziona perfettamente. Grazie anche per il controllo sulla lunghezza delle liste, non ci avevo pensato e sarebbe stato un bel problema in produzione. Devo dire che tutti voi state facendo un lavoro fantastico a spiegarmi le cose, anche se all'inizio ero un po' scocciato per l'errore stupido. Scusate se sono permaloso, è più forte di me!