Je souhaite mapper une valeur plusieurs fois dans un dictionnaire et enregistrer les valeurs intermédiaires. Puisque list.append()
ne renvoie pas de valeur, voici le meilleur que j'ai pu trouver. Y at-il une meilleure façon de le faire en Python, peut-être en utilisant une compréhension de liste ou une récursivité?Multi-mappage d'une valeur lors de l'enregistrement des valeurs intermédiaires
def append(v, seq):
seq.append(v)
return v
def multimap(value, f, count):
result = []
for _ in range(count):
value = append(f[value], result)
return result
print(multimap('a', {'a': 'b', 'b': 'c', 'c': 'd', 'd': 'a'}, 4))
Sortie:
['b', 'c', 'd', 'a']
Êtes-vous le 2 ou 3? Il semble que itertools.accumulate puisse le faire. – user2357112
@ user2357112: La question se posait dans le contexte de Py 3, mais il serait assez facile d'écrire une version simplifiée de 'accumulate' pour la version Py 2 (comme je l'ai fait occasionnellement) - bien que la première réponse de @ shx2 ci-dessous, qui est très similaire à cela, fonctionnerait dans les deux versions. – martineau