Core Example¶
[1]:
from musicnpy import _Set
Inizializzazione di _Set
NB(forse inutile perchè _Set è privata)
[2]:
a = _Set([-1, -2, 3, 4], 50)
Getters & Properties¶
[3]:
a.values
[3]:
[49, 48, 53, 54]
[4]:
a.offset
[4]:
50
[5]:
a.vals
[5]:
array([49, 48, 53, 54])
_Set.values ritorna una lista python, _Set.vals ritorna il numpy array dove sono contenuti i valori con cui vengono eseguite le operazioni a basso livello all’interno della classe
[6]:
a.deltas
[6]:
[-1, 5, 1]
[7]:
a.odd
[7]:
[49, 53]
[8]:
a.even
[8]:
[48, 54]
[9]:
a.profile
[9]:
[-1, 1, 1]
[10]:
a.mean
[10]:
51.0
[11]:
a_copy = a.copy
a_copy.reverse()
a, a_copy
[11]:
(_Set = [49, 48, 53, 54], _Set = [54, 53, 48, 49])
[12]:
a_copy.original
[12]:
[49, 48, 53, 54]
[13]:
a_copy.reset
[13]:
_Set = [49, 48, 53, 54]
[14]:
len(a)
[14]:
4
[15]:
max(a)
[15]:
54
[16]:
min(a)
[16]:
48
Arithmetic Operations¶
Le operazioni aritmetiche sono valide tra il _Set e un numero int/float, tra due _Set e tra un _Set e una list.
Tutte le operazioni possono essere fatte tramite sovrascittura della variabilie, in-place o in maniera inversa.
a = a + 1 # sovrascrittura
a = 1 + a # inversa
a += 1 # in-place
[17]:
a = a + 2
a
[17]:
_Set = [51, 50, 55, 56]
[18]:
a /= 2
a
[18]:
_Set = [25.5, 25.0, 27.5, 28.0]
[19]:
a = a - [10, 20, 30, 40]
a
[19]:
_Set = [15.5, 5.0, -2.5, -12.0]
[20]:
a *= a_copy
a, a_copy
[20]:
(_Set = [759.5, 240.0, -132.5, -648.0], _Set = [49, 48, 53, 54])
[21]:
a //= [8, 4, 6]
a
[21]:
_Set = [94.0, 60.0, -23.0, -648.0]
Se le due liste non sono lunghe uguali, come nel caso precedente, il problema viene evitato dietro le quinte seguendo queste regole principali:
addesub: vengono aggiunti n0alla lista più corta:[0, 1, 2, 3] + [1, 2, 3] = [1, 3, 5, 3] # ovvero.... [0, 1, 2, 3] + [1, 2, 3, 0] = [1, 3, 5, 3]
mul,div,powemod: vefono aggiunti n1alla lista più corta:[0, 1, 2, 3] * [1, 2, 3] = [0, 2, 6, 3] # ovvero ... [0, 1, 2, 3] * [1, 2, 3, 1] = [0, 2, 6, 3]