J'ai une liste comme suit: si j'utilise une déclaration de jointure, p> me donnera la sortie comme suit: p> mais, ce que je dois faire si je veux une sortie comme: p> (je sais que je peux utiliser la cordon concat Mais je veux savoir de meilleure manière) P> . p> p>
8 Réponses :
Pour inclure les espaces que vous avez montrés, vous devez avoir un espace dans la chaîne de séparation: ou le faire dans ce dernier, rstrip () code> est Il suffit de supprimer l'espace de suivi final (partie de sep code>) car ce n'est pas dans votre sortie souhaitée. Ce n'est pas le moyen le moins cher de le faire, mais il est assez clair. P> P>
@aix: Je suis d'accord sur l'exigence.
@aix: Pas vraiment. Imaginez que leur séparateur est plus complexe qu'une simple virgule (peut-être même une expression) et ils ne veulent pas le répéter deux fois ou utiliser une variable temporaire. Fait parfaitement sens pour moi.
@ THG435: Eh bien, dans l'exemple de l'OP, les deux séparateurs ne sont pas les mêmes i>. L'un est "," code> et l'autre est "", " code> (notez l'espace manquant). Je ne vois donc pas vraiment comment votre argument s'applique ici.
pour EDIT STROND>: Pour la chapharger un peu: P> str.join () code> Pour fonctionner, les éléments contenus dans le iérêteur (c'est-à-dire une liste ici), doivent être des chaînes elles-mêmes. Si vous voulez une virgule suivante, ajoutez simplement une chaîne vide à la fin de votre liste. l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l)
Merci @Michaelwild - Je me demandais pourquoi j'ai continué à avoir une virgule de fuite dans mon code et qu'il s'avère que c'était parce que la dernière entrée de la matrice que j'avais était la chaîne vide. À votre santé!
Tout d'abord, Vous pouvez régler cela et ajouter le virgule de fuite comme si: p> Je pense que c'est de loin le moyen le plus propre de le faire. p> p> ','. Joindre (l) code> ne fonctionnera pas du tout puisqu'il nécessite que les éléments soient des cordes, ce qu'ils ne sont pas.
La concaténation de la chaîne est la meilleure façon: mais vous avez d'autres options également: p> mappage à des chaînes finies par des virgules, puis joignant: p>
Ajoutez une chaîne vide à la liste jointe (ne modifiez pas l'original Utilisation de la mise en forme de chaîne au lieu de la concaténation: p>
l code> list!): p>
Vous voudrez peut-être changer l code> sur s code> pour toutes les options ou vice-verset?
Carte (Lambda) Code> est laid imo. Utilisez une expression génératrice à la place: '% s,'% x pour x dans l code>
Si vous ne voulez pas de concaténation, les choses pourraient être hacky ...
Si vous êtes à Python 3, vous pouvez exploiter la fonction intégrée d'impression:
from __future__ import print_function
* l code> décompresse la liste des éléments pour les transmettre en tant qu'arguments individuels à imprimer li>
-
sep code> est un argument facultatif qui est réglé sur entre les éléments imprimés à partir des éléments, ici, je l'ai défini sur ',' code> avec un espace comme vous le souhaitez li>
-
fin code> est un argument facultatif qui sera poussé à la chaîne imprimée résultante. Je l'ai défini sur ',' code> sans espace pour correspondre à votre besoin li>
ul> Vous pouvez l'utiliser à partir de Python 2.6 en important la fonction d'impression p>
print(*l, sep=', ', end=',')
- Cela suppose que vous souhaitez émettre la chaîne résultante dans STDOUT; Ou vous pouvez rediriger la sortie dans un fichier avec le fichier code> argument facultatif dans un fichier li>
- Si vous êtes en python 2, le
__ futur __ code> Importation peut casser votre compatibilité de code afin de pouvoir isoler votre code dans un module séparé si le reste de votre code n'est pas compatible. LI >
ul> L'histoire longue courte, cette méthode ou les autres réponses proposées pose beaucoup d'efforts pour tenter d'éviter d'ajouter simplement un + ',' code> à la fin du joindre code> chaîne résultante p> p>
Cette session inactive est un bon exemple de la manière de tirer les éléments de la liste dans une chaîne avec une virgule suivante:
Je ne sais pas si c'est ce que vous cherchez? Cela fonctionne cependant. P>
l = [1,2,3,4] p>
pour Num in L: Imprimer (Str (Num), End = ",") P>