• [^] # Re: Python

    Posté par (site web personnel) . En réponse au journal Découvrir Docker, Python, LLVM et Emscripten. Évalué à 5.

    Lapin compris. Tu aurais un exemple ?

    En l'occurrence je pensais à un truc qui ressemble à ce qui suit. Intuitivement j'aurais écris quelque chose comme :

    some_list = # ...
    list_a = []
    list_b = []
    for s in some_list:
     if s[0] == 'a':
     list_a.append(s)
     elif s[0] == 'b':
     list_b.append(s)

    Mais j'ai l'impression qu'on me dirait que ce serait plus Pythonic de faire :

    def starts_with_a(s):
     return s[0] == 'a'
    def starts_with_b(s):
     return s[0] == 'b'
    some_list = # ...
    list_a = list(filter(starts_with_a, some_list))
    list_b = list(filter(starts_with_b, some_list))

    Cette notion de "Pythonic", on la retrouve notamment dans des réponses sur StackOverflow. Par exemple :

    Using an additional state variable, such as an index variable (which you would normally use in languages such as C or PHP), is considered non-pythonic.

    Et là, perso, je me dis qu'utiliser des indices dans les boucles répond au problème de l'itération depuis 1792, et n'importe quel programmeur de n'importe quel langage peut comprendre une telle boucle. Est-ce que ça vaut le coup de l'éviter ? Pour quel gain ?