Grazie Federico, ma a me sembra una lacuna. Forse uso abitualmente software CAS.
Ciao Bruno > Il giorno 25 mag 2021, alle ore 19:45, Federico Cerchiari > <federicocerchi...@gmail.com> ha scritto: > > > Ciao Bruno, > > 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. > 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. > > In questo caso, sia "True" che "1" hanno hash di valore 1: > >>> hash(True) > 1 > >>> hash(1) > 1 > >>> hash(True) == hash(1) > True > >>> True == 1 > True > > 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: > >>> { 1 , True } > {1} > >>> { True, 1 } > {True} > > Il comportamento è un false friend, ma deriva da come è implemenato il metodo > __hash__ alla base dell'interprete. Lo setsso vale per False e 0: > >>> { False, 0 } > {False} > > I due bool, ed 1 e 0, hanno lo stesso "valore" per l'interprete, pur essendo > "cose" diverse: > >>> True is 1 > False > > Ciao > Federico > >> Il giorno mar 25 mag 2021 alle ore 19:27 Bruno Firmani >> <firmanibr...@gmail.com> ha scritto: >> Buonasera, >> sto incontrando questa difficoltà. >> >> Sto imparando. >> >> Alle istruzioni: >> >> ss0 = { 2<=2 , 5 >= 3 } >> ss1 = { 1 , 2 , 3 , 4 , '4' , '5' , 'a' , 'b' , 'c' , 3 , '3' , 4 , '4' , >> False , 2<=2 , 5 >= 3 } >> ss2 = { 1 ,11 , 'a' , 'ab' , 'abc' } >> ss3 = { 1 , 2 , 3 , 2 , 3 , 3 , 'a' , 'b' , 'c' , 'b' , 'c' , 'c' , False , >> 2<=2 , 5 >= 3 } >> >> print('ss0 = ' , ss0) >> print('ss1 = ' , ss1) >> print('ss2 = ' , ss2) >> print('ss3 = ' , ss3) >> >> ottengo come risposta: >> >> ss0 = {True} >> ss1 = {False, 1, 2, 3, 4, '5', '3', 'b', 'c', '4', 'a'} >> ss2 = {1, 'abc', 11, 'ab', 'a'} >> ss3 = {False, 1, 2, 3, 'b', 'c', 'a'} >> >> >> In "ss0" compare "True" che invece non viene evidenziato in "ss1" e in "ss3". >> Non so spiegarmi questo fenomeno. >> >> Cordiali saluti >> Bruno Firmani >> >> >> >> >> >> Bruno Firmani >> Via Giannantonio Manci 5 - 39100 BOLZANO >> e.mail firmanibr...@gmail.com >> mlbf1...@gmail.com >> tel. +39 338 5721755 (cellulare) >> fax +39 02 70039544 >> _______________________________________________ >> Python mailing list >> Python@lists.python.it >> https://lists.python.it/mailman/listinfo/python > _______________________________________________ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python