10
votes

Concaténate ou impression Éléments de liste avec une virgule de fuite à Python

J'ai une liste comme suit: xxx

si j'utilise une déclaration de jointure, xxx

me donnera la sortie comme suit: xxx

mais, ce que je dois faire si je veux une sortie comme: xxx

(je sais que je peux utiliser la cordon concat Mais je veux savoir de meilleure manière)

.


0 commentaires

8 Réponses :


1
votes

Pour inclure les espaces que vous avez montrés, vous devez avoir un espace dans la chaîne de séparation: xxx

ou le faire sèche-lèche : xxx

dans ce dernier, rstrip () est Il suffit de supprimer l'espace de suivi final (partie de sep ) 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.


3 commentaires

@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 . L'un est "," et l'autre est "", " (notez l'espace manquant). Je ne vois donc pas vraiment comment votre argument s'applique ici.



5
votes

pour 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.

EDIT STROND>: Pour la chapharger un peu: P>

l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l) 


1 commentaires

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é!



1
votes

Tout d'abord, ','. Joindre (l) ne fonctionnera pas du tout puisqu'il nécessite que les éléments soient des cordes, ce qu'ils ne sont pas.

Vous pouvez régler cela et ajouter le virgule de fuite comme si: xxx

Je pense que c'est de loin le moyen le plus propre de le faire.


0 commentaires

13
votes

La concaténation de la chaîne est la meilleure façon: xxx

mais vous avez d'autres options également:

  1. mappage à des chaînes finies par des virgules, puis joignant: XXX

  2. Ajoutez une chaîne vide à la liste jointe (ne modifiez pas l'original l list!): XXX

  3. Utilisation de la mise en forme de chaîne au lieu de la concaténation: XXX


2 commentaires

Vous voudrez peut-être changer l sur s pour toutes les options ou vice-verset?


Carte (Lambda) est laid imo. Utilisez une expression génératrice à la place: '% s,'% x pour x dans l



1
votes

Si vous ne voulez pas de concaténation, les choses pourraient être hacky ... xxx


0 commentaires

6
votes

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>


0 commentaires

0
votes

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: xxx


0 commentaires

0
votes

Je ne sais pas si c'est ce que vous cherchez? Cela fonctionne cependant.

l = [1,2,3,4]

pour Num in L: Imprimer (Str (Num), End = ",")


0 commentaires