L'ajout de la même chaîne à une liste de chaînes de caractères en Python
Je suis en train de prendre une chaîne de caractères, et l'ajouter à chaque chaîne de caractères contenus dans une liste, et ensuite une nouvelle liste à la les chaînes. Exemple:
list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
*magic*
list2 = ['foobar', 'fobbar', 'fazbar', 'funkbar']
J'ai essayé pour les boucles, et une tentative de compréhension de liste, mais il a été ordures. Comme toujours, toute aide, beaucoup apprécié.
- Il n'est pas judicieux d'attribuer à
list
puisque c'est un builtin.
InformationsquelleAutor Kevin | 2010-01-12
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire est avec une compréhension de liste:
Avis que j'ai évité d'utiliser builtin des noms comme
list
parce que les ombres ou masque la builtin noms, ce qui est très bien, pas bon.Aussi, si vous n'avez pas réellement besoin d'une liste, mais juste besoin d'un itérateur, un générateur d'expression peut être plus efficace (bien qu'il n'est pas probable que la matière sur des listes):
Elles sont très puissantes, flexibles et concis. Tout bon programmeur python doit apprendre à manier eux.
(s + mystring for s in mylist)
u''
indique une chaîne Unicode.["{}) {}".format(i, s) for i, s in enumerate(mylist)]
list2 = ["mystring" + s for s in mylist]
=list2 = ['barfoo', 'barfob', 'barfaz', 'barfunk']
Ce sera d'impression:
Je n'ai pas trouvé un moyen de commenter les réponses jusqu'à maintenant. Si elle est ici.
Je soutiens Ignacio Vazquez-Abrams réponse de
list2 = ['%sbar' % x for x in list]
.D'autres réponses avec
[string + "bar" for string in list]
travaillent pour la plupart de temps, mais si vous acceptez de plus de solution générale pour le cas le plus simple, vous êtes - AMHA - Python suivant les Principes de Conception. Il doit être de préférence un moyen évident de le faire.%sbar
travaille tout le temps.list2 = ['%sbar' % (x,) for x in list]
. Veuillez donner des exemples où x désigne une chaîne de caractères et'%sbar' % x
"œuvres" etx + 'bar'
ne l'est pas.s1+s2
fonctionnera toujours (et plus efficace) dans ce cas.%sbar
travaille tout le temps etx + "bar"
dans certains cas .. Vrai six
est une chaîne de caractères il n'y a absolument aucun doute, les deux réponses sont correctes. Mais dès que vous sortezstrings
vous devez vous apprendre une nouvelle réponse pour la concaténation. Pour moi, tout concaténation va comme%sbar
si c'eststring
ouinteger
. J'ai l'impression que ferait l'ensemble du code et plus cohérente.'%sbar' % x
; il n'a pas; il a utilisé'%sbar' % (x,)
-- re-lire sa réponse. (2) Vous concaténer des nombres entiers à l'aide'%sbar'
, pensez-vous? C'est une notion étrange de concaténation. Exemple, s'il vous plait, j'ai pensé questring % expression
était pour le formatage, pas de concaténation. Pour concaténer des listes (en cohérence avec la concaténation de chaînes de caractères) - je utiliser+
par exemplea=[1,2];b=[3,4];c=a+b;print c
-- comment concaténer des listes à l'aide de"%sbar"
?map
semble être le bon outil pour le travail pour moi.Voir cette section sur la programmation fonctionnelle des outils pour plus d'exemples de
map
.De l'exécution de l'expérience qui suit la pythonic façon:
semble être de ~35% de plus que l'évidence l'utilisation d'une boucle for comme ceci:
Expérience
Résultats
Étendre un peu à "Ajout d'une liste de chaînes d'une liste de chaînes de caractères":
Résultat:
dtype odject peut encore être converties str
at = np.full(fill_value='@',shape=1,dtype=object)
ou tout simplement:at = np.array("@", dtype=object)
vous pouvez utiliser lambda l'intérieur de la carte en python. a écrit un gris générateur de codes.
https://github.com/rdm750/rdm750.github.io/blob/master/python/gray_code_generator.py
# votre code se trouve ici
"'
les n-1 bits de code, avec 0 ajouté à chaque mot, suivie par
les n-1 bits de code dans l'ordre inverse, avec 1 ajouté à chaque mot.
"'
Et n'utilisez pas
list
comme un nom; il les ombres du type intégré.'%sbar' % (x,)
au lieu de'%sbar' % x
? Pourquoi ne pasx + 'bar'
?Utilisant des noms comme "liste" pour vos noms de variable est une mauvaise chose car il va remplacer/remplacer les objets internes.
Ici est une simple réponse à l'aide de
pandas
.Juste au cas où