J'essaie d'aller au creux une liste appelée J'ai aussi un dictionnaire appelé quelque chose comme ceci: p> donc le résultat sera donc comme ceci: p> < pré> xxx pré> ci-dessous, je montre la fonction qui fait ce p> Merci beaucoup à l'avance! p> p> Message code>, c'est un mot simple et le codez. symbole_code_table code>, que A le code pour chaque lettre dans le mot. P> pour boucle code> p>
4 Réponses :
Je voulais savoir s'il y a une autre façon d'aller à la crosse le message sans avoir à utiliser une boucle. P>
Vous pouvez utiliser une compréhension de liste à la place: p>
xxx pré> Notez que c'est toujours une boucle. En d'autres termes, il n'est pas plus efficace de courir. La syntaxe est juste beaucoup plus concise. P> blockQuote>
Je pense que cette réponse ne répond pas à la question réelle
@Adambajger pourquoi pas?
Parce que la question était, s'il y a un moyen d'éviter de boucle. Vous avez suggéré une boucle comme une solution.
@Adambajger, je suis désolé ... Où est la boucle de ma réponse? Il existe une compréhension de la liste, qui est une structure en boucle, mais ce n'est pas une boucle. De plus, la mise en garde à la fin de ma réponse clarifie cette distinction.
Généralement je dirais non. Vous devez visiter chaque élément au moins une fois pour le coder, ce qui conduit toujours à une forme de A pour la boucle, aussi bien que vous l'écrivez. P>
Si vous en avez besoin uniquement pour éviter le mot-clé "pour" dans le code Python, utilisez la récursion de la queue. P>
Si vous recherchez une vitesse d'accélération, vous pouvez diviser le message en morceaux, les coder dans des threads parallèles, puis rejoindre les résultats dans la commande correcte pour obtenir le message encodé complet. P>
Vous pouvez certainement avec le paradigme fonctionnel, voici ici à l'aide de mappe code>:
Veuillez corriger votre code avec " code> ou ' code>, au lieu de " code>. Sinon, c'est probablement ce que la réponse acceptée devrait être,
Vous devriez probablement noter que cela boucle toujours sur message code>. Il est juste caché dans la fonction mappe () code>.
@ Norok2 En effet, j'ai remarqué que cela aussi, mais je ne trouve pas un moyen facile de le faire d'un iPhone: /
@ Code-Apprentice: Je pense qu'il est évident qu'une sorte d'itération est requise. La question, cependant, demande spécifiquement sur "pour les boucles", pas "aucune boucle de quelque nature que ce soit" :)
@smassey vous et moi pensons tous les deux que l'itération ici est évidente, mais les futurs visiteurs ne peuvent pas. La question est ambiguë sur cette distinction. Le titre dit "Sans boucles" pendant que le corps dit "sans avoir à utiliser une boucle". Je pense qu'il est important de clarifier que, tandis que mapper () code> n'est pas un explicite de la boucle code>, c'est toujours une boucle.
Ma solution: P>
binaire_code = ''Join (liste (carte (Lambda s: symbol_code_table.get.get (s), message))) code> p>
Je ne vois pas comment tu pourrais faire ça sans utiliser de boucle
Votre code ne produit pas votre sortie rapportée, même si vous deviez
retour code> /impression () code> lebinaire_code code>. L'espace est manquant.La seule façon de le faire sans une boucle est d'a) écrire chaque opération effectuée dans votre ligne de boucle par ligne, ou b) Vectorisez Votre code.
@Roadrunner Il n'est pas clair si la question est "Comment puis-je accomplir cela sans le
pour- dans
: code> syntaxe?" ou "Comment puis-je accomplir cela sans répéter sur la liste?" Ma réponse ci-dessous aborde le premier pendant que vous le lisez comme la seconde. Si vous ne vous souciez pas des espaces, vous pouvez écrire:
message.translate (str.maketrans (symbole_code_table)) code>.