<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr">Grazie Federico,</div><div dir="ltr">ma a me sembra una lacuna. Forse uso abitualmente software CAS. </div><div dir="ltr"><br></div><div dir="ltr">Ciao</div><div dir="ltr">Bruno</div><div dir="ltr"><br><blockquote type="cite">Il giorno 25 mag 2021, alle ore 19:45, Federico Cerchiari <federicocerchiari@gmail.com> ha scritto:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div>Ciao Bruno,</div><div><br></div><div>questo comportamento dell'interprete deriva dal fattto che in ss1 ed ss3, nel momentto in cui True viene inserito nel set, è già presente un oggetto con "valore" 1 nello stesso set.</div><div>Questo perchè i set (come le chiavi dei dizionari) sono collezioni di "hashabili", gli hashabili sono oggetti di cui può essere calcolatto l'hash, e l'hash è un numero intero che identtifica il "valore" dell'oggetto.</div><div><br></div><div>In questo caso, sia "True" che "1" hanno hash di valore 1:</div><div>>>> hash(True)<br>1<br>>>> hash(1)<br>1<br>>>> hash(True) == hash(1)<br>True<br>>>> True == 1<br>True<br></div><div><br></div><div>Entrambi True e 1 "valgono" 1, al momento dell'inserimento in un insieme, Python fa questo ragionamento: "esiste già un elemento che "vale" come questo?", e in ss1 ed ss3, la risposa è sì. Lo stesso vale in entrambi i versi:</div><div>>>> { 1 , True }<br>{1}<br>>>> { True, 1 }<br>{True}<br><br></div><div>Il comportamento è un false friend, ma deriva da come è implemenato il metodo __hash__ alla base dell'interprete. Lo setsso vale per False e 0:</div><div>>>> { False, 0 }<br>{False}</div><div><br></div><div>I due bool, ed 1 e 0, hanno lo stesso "valore" per l'interprete, pur essendo "cose" diverse:<br></div><div>>>> True is 1<br>False</div><div><br></div><div>Ciao<br></div><div>Federico<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mar 25 mag 2021 alle ore 19:27 Bruno Firmani <<a href="mailto:firmanibruno@gmail.com">firmanibruno@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Buonasera,</div><div>sto incontrando questa difficoltà.</div><div><br></div><div>Sto imparando.</div><div><br></div><div>Alle istruzioni:</div><div><br></div><div><span style="font-family:monospace">ss0 = { 2<=2 , 5 >= 3 }<br>ss1 = { 1 , 2 , 3 , 4 , '4' , '5' , 'a' , 'b' , 'c' , 3 , '3' , 4 , '4' , False , 2<=2 , 5 >= 3 }<br>ss2 = { 1 ,11 , 'a' , 'ab' , 'abc' }<br>ss3 = { 1 , 2 , 3 , 2 , 3 , 3 , 'a' , 'b' , 'c' , 'b' , 'c' , 'c' , False , 2<=2 , 5 >= 3 } <br><br>print('ss0 = ' , ss0)<br>print('ss1 = ' , ss1)<br>print('ss2 = ' , ss2)<br>print('ss3 = ' , ss3)</span></div><div><br></div><div>ottengo come risposta:</div><div><br></div><div><span style="font-family:monospace">ss0 =  {True}<br>ss1 =  {False, 1, 2, 3, 4, '5', '3', 'b', 'c', '4', 'a'}<br>ss2 =  {1, 'abc', 11, 'ab', 'a'}<br>ss3 =  {False, 1, 2, 3, 'b', 'c', 'a'}</span></div><div><br></div><div><br></div><div>In "ss0" compare "True" che invece non viene evidenziato in "ss1" e in "ss3".</div><div>Non so spiegarmi questo fenomeno.<br><br></div><div>Cordiali saluti</div><div>Bruno Firmani<br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span style="color:rgb(0,0,0)"><span style="font-family:monospace,monospace">       Bruno Firmani<br>       Via Giannantonio Manci 5 - 39100 BOLZANO<br>e.mail <a href="mailto:firmanibruno@gmail.com" target="_blank">firmanibruno@gmail.com</a><br></span></span></div><div><span style="color:rgb(0,0,0)"><span style="font-family:monospace,monospace">       <a href="mailto:mlbf1984@gmail.com" target="_blank">mlbf1984@gmail.com</a> <br></span></span></div><div dir="ltr"><span style="color:rgb(0,0,0)"><span style="font-family:monospace,monospace">tel.   +39 338 5721755 (cellulare)<br>fax    +39 02 70039544 <br></span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="https://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div>
<span>_______________________________________________</span><br><span>Python mailing list</span><br><span>Python@lists.python.it</span><br><span>https://lists.python.it/mailman/listinfo/python</span><br></div></blockquote></body></html>