J'ai une liste de chaînes.
['a0', 'b0', 'c0', 'a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'a3', 'b3', 'c3']
4 Réponses :
Au lieu de votre dernière ligne, utilisez:
the_list = ['a', 'b', 'c']
with open('myFile.txt', 'w') as f:
for num in range(4):
for letter in the_list:
f.write("%s%s\n" % (letter, num))
Nice .. et faveur xrange code> sur plage code> en général (bien que avec de tels nombres, il ne devrait pas vraiment importer)
Il est préférable d'utiliser code> code> dans les réponses sur ce site car il est compatible avec Python 3.
@jamylak pouvez-vous dire que je code toujours avec 2,6 / 7 .. Merci de le remarquer.
Je ne comprends pas. Je veux dire qu'il est préférable que les personnes visionnent la réponse qui peut utiliser Python 2.x ou Python 3.x de sorte que cela fonctionnera pour eux de toute façon.
@jamylak je n'étais pas en désaccord avec toi
@jamylak Yup, je offrais une explication de mon commentaire original et que vous vous remerciions pour votre commentaire. C'est parfait.
Merci beaucoup: D Ceci semble être juste ce que j'étais après. Doit te souvenir % !
Cela ferait probablement votre travail
Merci, je suis inconnu avec itertools
Si vous souhaitez compresser votre code un peu vous pouvez faire:
>>> n = 4
>>> the_list = ['a', 'b', 'c']
>>> new_list = [x+str(y) for x in the_list for y in range(n)]
>>> with open('myFile.txt', 'w') as f:
... f.write("\n".join(new_list))
Je pense que c'est en fait moins i> pythonic que la solution de l'OP: 1) Il utilise mappe code> et lambda code>, qui ne sont pas aussi python que les compréhensions de la liste ou droite list.append code>, 2) carte + lambda + itTools est plus complexe et probablement plus lent que la solution de bison, ce qui le rend moins zen de python-ish, 3) il n'utilise pas le < Code> avec la relève code>, le fichier peut donc ne pas être fermé (bien que dans CPPHON IL EST), 4) Il est préférable de compresser votre code à l'aide de GZIP. :-)
Je ne pense pas que cela très lisible (simple est meilleur que complexe) bien que à un niveau assez cool de transmet tout cela dans ce code court.
Je sais, puisque j'ai regardé l'apprentissage Haskell, mon code devient Ulglier et Laglier. Urgh.
Je ne savais pas que vous pourriez avoir pour boucle sur une ligne comme ça, c'est assez compressé!
Bien que, pour la sortie, je suis après avoir dû inverser l'ordre du pour code> boucles :)
Ce que vous faites, c'est bien - l'un des points du zen de Python est "simple vaut mieux que complexe". Vous pouvez facilement réécrire ceci comme une doublure (éventuellement à l'aide d'une compréhension de la liste imbriquée), mais ce que vous avez bien convaincu et facile à comprendre. P>
Mais il y a quelques changements mineurs que je pourrais faire: p>
JSON.DUMP (NewList, F) code>. Bon pour utiliser le avec code> instruction, cependant. Li>
- Vous n'avez pas besoin d'un
StringNum distinct code> - STR (num) code> à l'intérieur de l'annexe est tout aussi bon li>
- Suivez Conventions de nommage PEP-8 , donc
new_list < / code> au lieu de nouvelleliste code> li>
- Nitpicking: Votre titre de question dit "Modifier tous les éléments dans une liste", lorsqu'il est en réalité, votre code construit une nouvelle liste. Habituellement, c'est la chose pythonique à faire de toute façon - des effets secondaires comme la modification de la liste en place sont souvent moins utiles. Li>
ul>
Regarda Json et lisez les conventions PPE-8. À l'intérieur de l'APPEND- Merci (tout à fait évident maintenant, je le vois: D) Vous avez raison, j'ai défini l'intention de modifier la liste, mais dans mon code, j'ai créé un nouveau. Cela semble être une meilleure idée aussi. Merci
Les répondeurs notent que l'OP a demandé une solution «plus pythonique», pas plus courte ou plus complexe.