Entra

View Full Version : Python - creare lista con struct


gabmac2
18-09-2014, 18:37
Ad esempio volendo utilizzare una lista in cui ogni elemento ha 2 informazioni,
es
arr[0].nome
arr[0].cognome
che sintassi si deve utilizzare per utilizzare la struttura dati?

E' possibile inoltre utilizzare codice scritto in un altro file .py rispetto a quello corrente?
Grazie in anticipo

ingframin
19-09-2014, 05:43
#file cristiano.py

class Cristiano:
def __init__(self,nome,cognome):
self.nome = nome
self.cognome = cognome

###########################
#file ciccio_pasticcio.py

from cristiano import Cristiano
#2) oppure import cristiano
#3) oppure from cristiano import *

c = Cristiano('ciccio','panzone')
#in caso di opzione 2
# c = cristiano.Cristiano("peppe","gazzosa")
c2 = Cristiano("","") #puoi pure assegnare nome e cognome dopo e mettere una stringa vuota per il momento

#adesso hai 2 istanze della classe cristiano e le metti in una lista
lc = [c,c2]

#se vuoi cambiare il nome di ciccio panza in cecenzo panza
lc[0].nome = "cecenzo"

#se vuoi vedere i risultati
for n in lc:
print(n)
#e stampi una lista di indirizzi!
#puoi dare un'occhiata al metodo speciale __str__(self)
#oppure
for n in lc:
print(n.nome+"\t"+n.cognome+"\n")

gabmac2
20-09-2014, 21:20
gentilissimo,
ancora 2 cose,
-per rendere una lista di liste un' unica lista, come si può fare?
es ([1,2,3][4,5,6]) in [1,2,3,4,5,6]
-come si può ordinare una lista di stringhe?

ingframin
21-09-2014, 17:04
gentilissimo,
ancora 2 cose,
-per rendere una lista di liste un' unica lista, come si può fare?
es ([1,2,3][4,5,6]) in [1,2,3,4,5,6]
-come si può ordinare una lista di stringhe?

1) [1,2,3] +[ 4,5,6] = [1,2,3,4,5,6]
2 ) sorted(nomelista)

Leggiti il tutorial di oython o comprati imparare python di mark lutz!

gabmac2
23-09-2014, 16:06
una cosa però tipo le struct in C non esiste?

GByTe87
23-09-2014, 16:42
una cosa però tipo le struct in C non esiste?

potresti usare una namedtuple (https://docs.python.org/2/library/collections.html#collections.namedtuple) o una classe con __slots__ (https://docs.python.org/2/reference/datamodel.html#slots)

gabmac2
23-09-2014, 21:54
per creare semplicemente una situazione del tipo
lista di elementi del tipo
lista[i].nome="x"
lista[i].cognome="y"
non è possibile?

ingframin
24-09-2014, 06:37
A parte che se ti prendi la briga di leggere la documentazione di python ti accorgi che ci sono proprio le struct come in C, ma perché non ti va bene?
Python è diverso da C non puoi pretendere di avere gli stessi costrutti sintattici.
Ma comunque ripeto: leggi il manuale!