Maison >développement back-end >Tutoriel Python >Comment puis-je collecter efficacement les résultats de calculs répétés en Python ?

Comment puis-je collecter efficacement les résultats de calculs répétés en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-18 01:34:10904parcourir

How Can I Efficiently Collect Results from Repeated Calculations in Python?

Collecte des résultats de calculs répétés

Énoncé du problème :

Je dois collecter les résultats d'un calcul effectué à plusieurs reprises pour plusieurs valeurs de x et utilisez-les ensuite.

Général Approches

Utilisation d'une boucle explicite :

  • Créez une liste ou un dictionnaire avant la boucle et ajoutez ou associez les résultats au fur et à mesure qu'ils sont calculés :
ys = []
for x in [1, 3, 5]:
    ys.append(x + 1)

ys = {}
x = 19
while x != 1:
    y = next_collatz(x)
    ys[x] = y
    x = y

Utiliser une compréhension ou un générateur Expression :

  • Compréhension de liste :

    xs = [1, 3, 5]
    ys = [x + 1 for x in xs]
  • Compréhension de dictionnaire :

    ys = {x: x + 1 for x in xs}

Utilisation map :

  • Mappez une fonction à une séquence et convertissez le résultat en une liste :

    def calc_y(an_x):
      return an_x + 1
    xs = [1, 3, 5]
    ys = list(map(calc_y, xs))

Spécifique Exemples :

Collecte des résultats pour un Séquence :

def make_list_with_inline_code_and_for():
    ys = []
    for x in [1, 3, 5]:
        ys.append(x + 1)
    return ys

def make_dict_with_function_and_while():
    x = 19
    ys = {}
    while x != 1:
        y = next_collatz(x)
        ys[x] = y # associate each key with the next number in the Collatz sequence.
        x = y # continue calculating the sequence.
    return ys

Gestion des données changeantes au cours d'une boucle :

Utilisation d'une expression génératrice :

def collatz_from_19():
    def generate_collatz():
        nonlocal x
        yield x
        while x != 1:
            x = next_collatz(x)
            yield x
    x = 19
    return generate_collatz()

Utilisation de la carte :

def collatz_from_19_with_map():
    def next_collatz2(value):
        nonlocal x
        x = value
        return next_collatz(x)
    x = 19
    return map(next_collatz2, range(1))

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn