{"id":752,"date":"2011-06-27T14:21:33","date_gmt":"2011-06-27T13:21:33","guid":{"rendered":"http:\/\/saladtomatonion.com\/blog\/?p=752"},"modified":"2011-06-27T14:21:33","modified_gmt":"2011-06-27T13:21:33","slug":"python-les-listes-le-hasard","status":"publish","type":"post","link":"https:\/\/saladtomatonion.com\/blog\/2011\/06\/27\/python-les-listes-le-hasard\/","title":{"rendered":"Python, les listes, le hasard"},"content":{"rendered":"<p>Aujourd&rsquo;hui, on fait du pseudo-al\u00e9atoire. Python est un langage de script tr\u00e8s pratique lorsqu&rsquo;on doit manipuler des listes (tableaux), ou des dictionnaires (tables de hachage). Voyons comment en tr\u00e8s peu de code, on peut lier les listes avec le module <code>random<\/code>.<!--more--><\/p>\n<p>Imaginons que je veuille choisir un ou plusieurs \u00e9l\u00e9ments au hasard dans une liste d&rsquo;\u00e9l\u00e9ments. Je connais quelques bases du module <code>random<\/code>,\u00a0 je vais donc avoir envie de proc\u00e9der comme suit :<\/p>\n<pre name=\"code\" class=\"py:nogutter:nocontrols\">\r\nimport random\r\n\r\nma_liste = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]\r\n\r\n# Obtenir un \u00e9l\u00e9ment au hasard\r\ni = random.randint(0, len(ma_liste) - 1)\r\nelem = ma_liste[i]\r\n\r\n# Obtenir un ensemble d'\u00e9lements au hasard\r\nnb_elem = 6\r\nindices = []\r\nwhile nb_elem > 0:\r\n    i = random.randint(0, len(ma_liste) -1)\r\n    while i in indices: # tant que le tirage redonne un nombre d\u00e9j\u00e0 choisi\r\n        i = random.randint(0, len(ma_liste) -1)\r\n    indices.append(i)\r\n    nb_elem = nb_elem - 1\r\nresultat = []\r\nfor index in indices:\r\n    resultat.append(ma_liste[index])\r\n<\/pre>\n<p>Pas tr\u00e8s \u00e9l\u00e9gant, n&rsquo;est ce pas? Heureusement, <code>random<\/code> nous offre aussi des fonctions sur les listes. \u00c7a devrait donc plut\u00f4t donner \u00e7a :<\/p>\n<pre name=\"code\" class=\"py:nogutter:nocontrols\">\r\nimport random\r\n\r\nma_liste = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]\r\n\r\n# Obtenir un \u00e9l\u00e9ment au hasard\r\nun_element = random.choice(ma_liste)\r\n\r\n# Obtenir \u00e9chantillon de 6 \u00e9l\u00e9ments\r\nechantillon = random.sample(ma_liste, 6)\r\n<\/pre>\n<p>Beaucoup mieux!<\/p>\n<p>En bonus, si vous souhaitez m\u00e9langer les \u00e9l\u00e9ments d&rsquo;une liste, pour la parcourir dans un ordre diff\u00e9rent (et al\u00e9atoire) de l&rsquo;ordre de sa construction, proc\u00e9dez ainsi :<\/p>\n<pre name=\"code\" class=\"py:nogutter:nocontrols\">\r\nimport random\r\nma_liste = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]\r\nrandom.shuffle(ma_liste)\r\n# Attention, la liste sera modifi\u00e9e \"sur place\"\r\n<\/pre>\n<p>Source : <a href=\"http:\/\/docs.python.org\/library\/random.html\" target=\"_blank\">la documentation officielle de python concernant le module <code>random<\/code><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aujourd&rsquo;hui, on fait du pseudo-al\u00e9atoire. Python est un langage de script tr\u00e8s pratique lorsqu&rsquo;on doit manipuler des listes (tableaux), ou des dictionnaires (tables de hachage). Voyons comment en tr\u00e8s peu de code, on peut&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":708,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[4],"tags":[187,186,56,57,21,38,185,188,189],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/saladtomatonion.com\/blog\/wp-content\/uploads\/2011\/04\/python-logo-glassy-small.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts\/752"}],"collection":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/comments?post=752"}],"version-history":[{"count":9,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts\/752\/revisions"}],"predecessor-version":[{"id":761,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts\/752\/revisions\/761"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/media\/708"}],"wp:attachment":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/media?parent=752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/categories?post=752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/tags?post=752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}