[PYTHON] Je veux pouvoir penser à la récurrence

Quand j'ai lu le livre de haskell, je me suis souvenu avoir ouvert les yeux sur scala et voulu écrire une fonction récursive, mais je n'étais pas confiant, alors j'ai supporté qsort. Je veux écrire une récurrence plus froide en la collant au registre dans mon cerveau. Chaque fois que j'écrivais une boucle, je pensais qu'il serait bon d'imaginer ce qui se passerait si je l'écrivais récursivement.

qsort.py


import random
a = [i for i in range(100)]
random.shuffle(a)
print "before"
print a 

def qsort(l):
  if len(l) > 1:
    pivot = random.randrange(len(l))
    smaller = [i for i in l if i < l[pivot] ]
    bigger = [i for i in l if i >= l[pivot] ]
    l = qsort(smaller) + qsort(bigger)
  return l

a = qsort(a)
print "after"
print a
```##Résultat de sortie

before
[5, 40, 28, 72, 7, 68, 64, 91, 37, 67, 23, 90, 85, 43, 39, 93, 58, 62, 75, 41, 53, 14, 3, 52, 47, 94, 44, 15, 80, 99, 89, 56, 33, 84, 86, 70, 10, 61, 59, 76, 35, 1, 60, 96, 55, 19, 26, 24, 32, 97, 30, 57, 66, 25, 69, 98, 12, 42, 78, 27, 87, 51, 21, 82, 92, 71, 9, 95, 11, 6, 83, 2, 81, 73, 17, 63, 16, 46, 34, 22, 77, 4, 48, 79, 49, 88, 36, 65, 29, 50, 31, 8, 18, 54, 45, 38, 20, 0, 74, 13]
after
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

Recommended Posts

Je veux pouvoir penser à la récurrence
Je veux faire des crises de ma tête
Je veux résoudre SUDOKU
Je souhaite annoncer ma thèse de fin d'études sur IPython Notebook
Je veux comprendre à peu près systemd
Je veux gratter des images et les former
Je veux faire ○○ avec les Pandas
Je veux copier l'annotation de yolo
Je veux déboguer avec Python
Je veux vérifier la position de mon visage avec OpenCV!
Je veux épingler Spyder à la barre des tâches
Je veux me mettre en colère contre ma mère quand la mémoire est serrée
Je veux détecter des objets avec OpenCV
Je veux sortir froidement sur la console
Je veux imprimer dans la notation d'inclusion
Je veux les gratter tous ensemble.
Je veux gérer la rime part1
Je veux savoir comment fonctionne LINUX!
Je veux écrire un blog avec Jupyter Notebook
Je veux gérer la rime part3
Je veux utiliser jar de python
Je veux créer un environnement Python
Je veux utiliser Linux sur mac
Je veux installer Python avec PythonAnywhere
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Je souhaite utiliser Django Debug Toolbar dans les applications Ajax
Je veux exprimer mes sentiments avec les paroles de Mr. Children
Je souhaite utiliser la console IPython Qt
Je veux afficher la barre de progression
Je veux faire un programme d'automatisation!
Je veux intégrer Matplotlib dans PySimpleGUI
Ce que j'ajoute toujours à mon ~ / .bashrc
Je veux formater et vérifier le code Python à mon goût sur VS Code
Je veux gérer la rime part2
Je souhaite développer des applications Android sur Android
Je veux que CAPTCHA dise des mots HIWAI
Je veux gérer la rime part5
J'ai fait de mon mieux pour retourner au Lasso
Je veux gérer la rime part4
[Ansible] Je souhaite appeler ma propre fonction à partir du module de modèle (macro)
Je veux créer un bel environnement de développement Python pour mon nouveau Mac
[Linux] Vous ne disposez pas des privilèges root. Mais je veux yum installer.
Je veux faire de matplotlib un thème sombre
Je souhaite me connecter à PostgreSQL à partir de plusieurs langues
Je veux faire le test de Dunnett en Python
Je souhaite créer facilement un modèle de bruit
Je veux utiliser MATLAB feval avec python
Je veux corriger Datetime.now dans le test de Django
Je veux INSÉRER un DataFrame dans MSSQL
Je veux mémoriser, y compris les arguments de mots clés de Python
Je veux créer une fenêtre avec Python
Quoi qu'il en soit, je veux vérifier facilement les données JSON
Je souhaite envoyer un e-mail depuis Gmail en utilisant Python.
[Python] Je veux gérer 7DaysToDie depuis Discord! 1/3
Je veux moquer datetime.datetime.now () même avec pytest!
Je souhaite afficher plusieurs images avec matplotlib.
Je veux frapper 100 sciences des données avec Colaboratory
Je veux faire un jeu avec Python