Je me demandais s'il y avait un moyen d'exécuter une carte sur quelque chose. La méthode de la carte fonctionne, elle prend une itérative et applique une fonction à chaque élément de ce itérable produisant une liste. Existe-t-il un moyen pour que map modifie l'objet itérable lui-même?Python: carte en place
Répondre
Vous pouvez utiliser un lambda (ou une définition) ou une meilleure compréhension de la liste (si elle est suffisante):
[ do_things_on_iterable for item in iterable ]
Quoi qu'il en soit, vous voudrez peut-être plus explicite avec une boucle si les choses deviennent trop complexe.
Par exemple, vous pouvez faire quelque chose comme ça, mais IMHO il est laid:
[ mylist.__setitem__(i,thing) for i,thing in enumerate(mylist) ]
il suffit d'écrire le code évident pour le faire.
for i, item in enumerate(sequence):
sequence[i] = f(item)
J'ai déjà essayé ça ... bizarrement c'est plus lent que la compréhension de la liste. La raison pour laquelle j'ai posé cette question est parce que je pensais que la carte serait plus rapide que la compréhension de la liste, et je ne vois pas l'intérêt de créer une nouvelle liste, mais jusqu'à présent la compréhension de la liste est gagnante. – johannix
compréhension de la liste == syntaxe sucre pour la carte – carl
Comment expliquez-vous la performance alors? La carte était à peu près deux fois plus lente. – johannix
Il est assez simple d'écrire:
def inmap(f, x):
for i, v in enumerate(x):
x[i] = f(v)
a = range(10)
inmap(lambda x: x**2, a)
print a
Une affectation de tranche est souvent ok si vous avez besoin de modifier une liste en place
mylist[:] = map(func, mylist)
- 1. coercion groovy carte en python
- 2. Inversion de dictionnaire sur place en Python
- 3. Hexagonal auto-organisant la carte en Python
- 4. comment mettre en place l'environnement de dev web python
- 5. Erreur mise en place de modules de friperies pour python
- 6. Existe-t-il un équivalent sur place de 'map' en python?
- 7. Carte vs la compréhension de la liste en Python
- 8. modifier en place
- 9. Django édition en place
- 10. modifier en place jquery
- 11. Carte de tuples dans un dictionnaire, python
- 12. Rails En édition sur place
- 13. valeur affichée - éditeur en place
- 14. Mise en place des coordonnées
- 15. Comment instancier stdClass en place
- 16. Modifier les liens en place
- 17. Mise en place du panier
- 18. Asp.net MVC Édition en place
- 19. site IIS7 mis en place
- 20. Construire un sondage pour mettre en place un site WordPress en utilisant Python/Django
- 21. une bonne solution pour mettre en place un triplestore rdf en python?
- 22. En Python, existe-t-il un moyen facile d'éditer le XML en place?
- 23. En utilisant jQuery en place de document.getElement
- 24. en place d'édition en utilisant awk
- 25. Documentation django mise en place en local
- 26. Jquery Carte en surbrillance
- 27. Que devrais-je utiliser à la place de l'assignation-dans-une-expression en Python?
- 28. Carte de Carte - paires de mots en java - collé
- 29. Comment mettre en place des ondulations d'eau?
- 30. Remplacer le document HTML entier en place
Vous ne pouvez le faire efficacement ce en Python avec une séquence mutable (c'est-à-dire une liste), pas un itérable arbitraire. – jemfinch
À droite, je travaille avec une liste. – johannix