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
Libérer: 2024-12-18 01:34:10
original
937 Les gens l'ont consulté

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
Copier après la connexion

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]
    Copier après la connexion
  • Compréhension de dictionnaire :

    ys = {x: x + 1 for x in xs}
    Copier après la connexion

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))
    Copier après la connexion

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
Copier après la connexion

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()
Copier après la connexion

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))
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal