Maison >développement back-end >Tutoriel Python >Comment puis-je collecter efficacement les résultats de calculs répétés en Python ?
É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.
Utilisation d'une boucle explicite :
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!