Java code

Messages : 357

Enregistré le : 04 oct. 2017 15:58

Classe : MP

Re: Java code

Message par Errys » 29 oct. 2017 23:53

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 :)
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 11360

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 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))))
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 285

Enregistré le : 16 févr. 2017 19:16

Classe : PC*

Re: Java code

Message par Lily1998 » 30 oct. 2017 16:39

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

Messages : 3327

Enregistré le : 01 mai 2016 20:09

Classe : Cassandre

Re: Java code

Message par siro » 30 oct. 2017 17:32

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.)
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Messages : 11360

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 30 oct. 2017 18:26

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...)
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 3327

Enregistré le : 01 mai 2016 20:09

Classe : Cassandre

Re: Java code

Message par siro » 30 oct. 2017 18:32

Y'a pas moyen avec du duck typping de faire gober 1e10 comme un entier à Python ?
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Messages : 470

Enregistré le : 27 févr. 2013 16:45

Classe : ENVT

Re: Java code

Message par loupi » 30 oct. 2017 23:46

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)))

Messages : 357

Enregistré le : 04 oct. 2017 15:58

Classe : MP

Re: Java code

Message par Errys » 31 oct. 2017 00:18

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.
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 11360

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 31 oct. 2017 14:47

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...
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre