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