Page 4 sur 4

Re: Java code

Publié : 29 oct. 2017 23:53
par Errys
C'est l'avantage du python :p

Il faut quand même garder en tête que c'est pas forcément optimisé de faire ça niveau temps/mémoire :)

Re: Java code

Publié : 30 oct. 2017 16:12
par fakbill
Ca c'est du python moche de qui ne sait pas pas que set existe et qu'on peut fait "list de str'"
En python pythonic, ça donne :
x=122345678
len(set(list(str(x))))

Re: Java code

Publié : 30 oct. 2017 16:39
par Lily1998
fakbill a écrit :
30 oct. 2017 16:12
Ca c'est du python moche de qui ne sait pas pas que set existe et qu'on peut fait "list de str'"
Désolée, je ne suis pas une pro du Python :p

Re: Java code

Publié : 30 oct. 2017 17:32
par siro
fakbill a écrit :
30 oct. 2017 16:12
Ca c'est du python moche de qui ne sait pas pas que set existe et qu'on peut fait "list de str'"
En python pythonic, ça donne :
x=122345678
len(set(list(str(x))))
J'aurais aussi fait un truc du genre.
AKA "pourquoi recompter des éléments quand Python sait déjà en faire un ensemble non redondant comme un grand ?".
Faut pas spécifier quand même à un moment les paramètres de str ? Il les met naturellement en base 10 ? (Je connais trop mal les subtilités de Python pour savoir.)

Re: Java code

Publié : 30 oct. 2017 18:26
par fakbill
Lily1998 : pas de problème :) En gros, en python, si tu commences à écrire une boucle for alors tu peux te dire qu'il y a probablement une façon plus élégante et souvent bien plus rapide de faire. Ce n'est bien sûr pas toujours vrai mais ça l'est souvent.

siro : non comme ça ça marche. Par contre, x=1e10 sera un float et non un int comme dans je crois tous les langages dont j'ai entendu parler (hum mathematica non je crois...pas sûr...à voir...bref...)

Re: Java code

Publié : 30 oct. 2017 18:32
par siro
Y'a pas moyen avec du duck typping de faire gober 1e10 comme un entier à Python ?

Re: Java code

Publié : 30 oct. 2017 23:46
par loupi
fakbill a écrit :
30 oct. 2017 16:12
Ca c'est du python moche de qui ne sait pas pas que set existe et qu'on peut fait "list de str'"
En python pythonic, ça donne :
x=122345678
len(set(list(str(x))))
en python python(econom)ic : len(set(str(x)))

Re: Java code

Publié : 31 oct. 2017 00:18
par Errys
siro a écrit :
30 oct. 2017 18:32
Y'a pas moyen avec du duck typping de faire gober 1e10 comme un entier à Python ?
Mon expérience en python est très limitée mais int(1e10) devrait marcher.

Re: Java code

Publié : 31 oct. 2017 14:47
par fakbill
loupi : ha oui merde!! ma list ne sert à rien...et c'est meme un bel exemple de ce que je vais décrire en dessous...je suis une buse.

Vous n'avez pas compris le system de typage de python ;)
C'est bien du duck typing donc 'on ne fait pas gober 1e10 comme un entier" ni on ne le caste en entier avec int.
x=1e10 c'est un float. Si on fait qq manipulation que ce soit avec ce x, que cette manipulation requiert que l'objet x ait une methode (je simplifie un peu) TRUC alors python dira "je me fous que ce soit un int, un float ou je ne sais quoi, on me demande de faire x.TRUC, x a une method truc donc ça marche. Tout ca pour dire que python ne fait pas de verification de type comme en C. Il vérifie seulement que l'objet sait faire (si ça marche et crie comme un canard alors on peut dire que c'est un canard....mais on s'en fout meme que ce soit un canard...ça marche et ça fait coincoin c'est ce qu'on veut)

Exemple pratique avec ma buserie:
Je voulais utiliser set pour virer les elements qui sont deux fois dans une liste....or tout ce que set(x) demande sur x c'est (en gros) de pouvoir accéder aux elements de x un par un. On peut très bien accéder aux elements d'une str un par un donc nul besoin de la caster en list.

c'est PENIBLE cette autocorrection en anglais...