Accademia:Oggetti predefiniti: differenze tra le versioni

tolto "stub"
(tolto "stub")
 
(43 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Template:Acc_Menu_Python}}
{{Acc_Menu_Python}}
== Tipi numerici ==
== Tipi numerici ==
=== Interi ===
=== Interi ===
Gli interi sono... numeri interi :)
Gli interi sono... numeri interi :)
Riga 29: Riga 30:
=== Numeri complessi ===
=== Numeri complessi ===
Li tralasciamo. Chi è interessato ora sa che in Python esiste un tipo predefinito per gestirli; si presume che sia in grado di trovare la documentazione autonomamente.
Li tralasciamo. Chi è interessato ora sa che in Python esiste un tipo predefinito per gestirli; si presume che sia in grado di trovare la documentazione autonomamente.


== Booleani ==
== Booleani ==
Riga 47: Riga 49:
0
0
</pre>
</pre>


== Sequenze ==
== Sequenze ==
Una sequenza può essere definita come un elenco ordinato e numerabile di oggetti.  
Una sequenza può essere definita come un elenco ordinato e numerabile di oggetti.  
In Python esistono 6 diversi tipi di sequenze: '''stringhe, bytes, bytearray, liste, tuple e range'''.  
In Python esistono 6 diversi tipi di sequenze: '''stringhe, bytes, bytearray, liste, tuple e range'''.  
Le sequenze si dividono in 2 categorie, '''mutabili''' (liste, bytearray) e '''immutabili''' (stringhe e tuple, bytes), per ''mutabile'' si intende che é possibile aggiungere, modificare o eliminare  componenti (oggetti) della sequenza.
I range sono sequenze di numeri ottenute tramite l'omonima funzione ''range()''


In questa sede tratteremo le sequenza più comuni: '''stringhe''', '''liste''' e '''tuple'''.
Le sequenze si dividono in 2 categorie, '''mutabili''' (liste, bytearray) e '''immutabili''' (stringhe e tuple, bytes), per ''mutabile'' si intende la possibilità di aggiungere, modificare ed eliminare  componenti (oggetti).
 
I range sono sequenze di numeri ottenute tramite l'omonima funzione ''range()''.
 
In questa sede tratteremo le sequenze più comuni: '''stringhe''', '''liste''' e '''tuple'''.


=== Stringhe ===
=== Stringhe ===
Riga 80: Riga 85:
</pre>
</pre>


 
Le stringhe possono essere '''indicizzate (indexed)''', cioé la posizione di ogni carattere può essere individuata con un numero intero:
Le stringhe possono essere '''indicizzate (indexed)''', cioé la posizione di ogni carattere può essere individuata con un numero intero, in pratica ogni carattere viene considerato come una stringa di dimensione 1:
<pre>
<pre>
  +---+---+---+---+---+
  +---+---+---+---+---+
Riga 91: Riga 95:
L'indicizzazione, come mostra la tabella sopra, può essere effettuata sia partendo dal primo carattere (sequenza di numeri positivi) che dall' ultimo (sequenza di numeri negativi).
L'indicizzazione, come mostra la tabella sopra, può essere effettuata sia partendo dal primo carattere (sequenza di numeri positivi) che dall' ultimo (sequenza di numeri negativi).


 
E' possibile estrapolare porzioni (substring) o singoli caratteri di una stringa per mezzo dello '''slicing''' (taglio).
E' possibile estrapolare porzioni (substring) o singoli caratteri di una stringa per mezzo dello '''slicing''' (letteralmente affettando).


Per estrapolare il primo carattere posso scrivere:
Per estrapolare il primo carattere posso scrivere:
Riga 146: Riga 149:
'avorP'
'avorP'
</pre>
</pre>


Le stringhe possono essere '''concatenate''' con l'operatore '''+''':
Le stringhe possono essere '''concatenate''' con l'operatore '''+''':
Riga 159: Riga 161:
</pre>
</pre>


Per la manipolazione delle stringhe sono disponibili una serie di '''operazioni comuni a tutte le sequenze''' (mutabili e non, eccetto che per i range), di seguito il link alla documentazione uffciale (prima tabella ):
* [http://docs.python.org/release/3.1.3/library/stdtypes.html#sequence-types-str-bytes-bytearray-list-tuple-range Sequence Types — str, bytes, bytearray, list, tuple, range]


Per la manipolazione delle stringhe sono inoltre disponibili una serie di '''metodi'''
Per l'analisi dei singoli '''metodi''' applicabili alle stringhe:
{{Box|Nota|Un metodo può essere definito (in modo un po' rudimentale) come una funzione applicabile ad un determinato oggetto. La sintassi standard é: ''oggetto.nome_metodo()''}}
{{Box|Nota|Un metodo può essere definito (in modo un po' rudimentale) come una funzione applicabile ad un determinato oggetto. La sintassi standard é: ''oggetto.nome_metodo()''}}
Per l'analisi dei singoli metodi applicabili alle stringhe, si rimanda alla documentazione ufficiale:
* [http://docs.python.org/release/3.1.3/library/stdtypes.html#string-methods String Methods]
* [http://docs.python.org/release/3.1.3/library/stdtypes.html#string-methods String Methods]


Riga 178: Riga 181:
{{Box|Nota|Per l'inserimento di oggetti di tipo stringa, é ammesso anche l'uso dei doppi apici}}
{{Box|Nota|Per l'inserimento di oggetti di tipo stringa, é ammesso anche l'uso dei doppi apici}}


Tutti gli oggetti contenuti in una lista sono '''indicizzati (indexed)''' con un valore numerico ed é possibile eseguire lo '''slicing''', analogamente a quanto detto per le stringhe.
Tutti gli oggetti contenuti in una lista sono '''indicizzati (indexed)''' con un valore numerico ed é possibile eseguire lo '''slicing (taglio)''', analogamente a quanto detto per le stringhe.


Le liste, essendo oggetti '''mutabili''', danno la possibilità di:
Le liste, essendo oggetti '''mutabili''', danno la possibilità di:


inserire nuovi elementi:
''inserire'' elementi:


<pre>
<pre>
Riga 190: Riga 193:
</pre>
</pre>


modificare elementi esistenti:
''modificare'' elementi:


<pre>
<pre>
Riga 205: Riga 208:
['ho', 46, 'anni', 'da', 'compiere']
['ho', 46, 'anni', 'da', 'compiere']
</pre>
</pre>
''eliminare'' elementi:
<pre>
>>> io[3:] = []
>>> io
['ho', 46, 'anni']
</pre>
analogamente alle stringhe, le liste possono essere '''concatenate''':
<pre>
>>> io+io
['ho', 46, 'anni', 'ho', 46, 'anni']
</pre>
'''ripeute''':
<pre>
>>> io*2
['ho', 46, 'anni', 'ho', 46, 'anni']
</pre>
possiamo '''aggiungere liste come nuovi elementi''', e agire sugli elementi di quest'ultime:
<pre>
>>> accidenti = ['sono', 'già', 'grande']
>>> io[3:3] = [accidenti]
>>> io
['ho', 46, 'anni', ['sono', 'già', 'grande']]
>>> io[3][2]
'grande'
</pre>
Per la manipolazione delle liste si possono effettuare una serie di '''operazioni comuni a tutte le sequenze mutabili''', di seguito il link alla documentazione ufficiale:
* [http://docs.python.org/release/3.1.3/library/stdtypes.html#mutable-sequence-types Mutable sequence types]
Per l'analisi dei '''metodi''' ed ulteriori funzionalità:
* [http://docs.python.org/release/3.1.3/tutorial/datastructures.html#more-on-lists More on Lists]


=== Tuple ===
=== Tuple ===
Per definire una tupla possiamo riprendere quando detto per le liste, insieme ordinato di oggetti. A differenza delle liste le tuple sono oggetti '''immutabili''', non é possibile inserire, modificare o cancellare elementi (oggetti).
Le tuple possono contenere oggetti mutabili come loro elementi.
Per creare una tupla la sintassi è la seguente:
<pre>
>>> tricolore = ('verde', 'bianco', 'rosso')
>>> tricolore
('verde', 'bianco', 'rosso')
</pre>
Anche gli elementi di una tupla sono '''indicizzati (indexed)''' con un valore numerico, ed é possibile eseguire lo '''slicing (taglio)''' in modo analogo a quanto detto per le liste.
==Collezioni non ordinate==
È possibile con i dizionari ed i set gestire oggetti in cui l'ordine di sequenza è superfluo.
===Dizionari===
Trattasi di una sequenza non ordinata di coppie di valori ''chiave:valore''. Siccome sono implementati tramite una tabella di hash, risultano molto efficienti quando è necessario effettuare ricerche per chiave.
Ecco qualche esempio:
<pre>>>> libri = {"Dante": "divina commedia", "Macchiavelli": "il principe"}
>>> libri
{'Macchiavelli': 'il principe', 'Dante': 'divina commedia'}
>>> libri.keys()
dict_keys(['Macchiavelli', 'Dante'])
>>> libri.items()
dict_items([('Macchiavelli', 'il principe'), ('Dante', 'divina commedia')])
>>> libri['Macchiavelli']
'il principe'</pre>
===Set===
I set sono collezioni disordinate di elementi unici. Molte delle operazioni che si possono compiere con questi oggetti sono direttamente collegabili alla teoria degli insiemi (quindi unione, differenza, intersezione, sottoinsieme...).
Ecco un chiaro esempio:
<pre>
>>> a = {1,2,3,4,5,6}
>>> 2 in a
True
>>> {2,3}.issubset(a)
True
>>> a
{1, 2, 3, 4, 5, 6}
>>> a = a - {3,6}
>>> a
{1, 2, 4, 5}
>>> a.add(4)
>>> a
{1, 2, 4, 5}
>>> a.add(4)
>>> a
{1, 2, 4, 5}
>>> a.union({5,6,7})
{1, 2, 4, 5, 6, 7}
</pre>


[[Categoria:Accademia Python - Lezione 1]]
[[Categoria:Accademia Python - Lezione 1]]
6 999

contributi