Dus ik heb een lijst:
['x', 3, 'b']
En ik wil dat de uitvoer is:
[x, 3, b]
Hoe kan ik dit doen in python?
Als ik str(['x', 3, 'b'])
doe, krijg ik er een met aanhalingstekens, maar ik wil geen aanhalingstekens.
Antwoord 1, autoriteit 100%
In Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
In Python 3 (waar print
een ingebouwde functie is en geen syntaxisfunctie meer):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Beide keren terug:
[x, 3, b]
Dit gebruikt de map()
functie om str aan te roepen voor elk element van mylist, waardoor een nieuwe lijst met strings wordt gemaakt die vervolgens wordt samengevoegd tot één string met str.join()
. Vervolgens vervangt de %
tekenreeksopmaakoperator de tekenreeks in in plaats van %s
in "[%s]"
.
Antwoord 2, autoriteit 11%
Dit is een eenvoudige code, dus als je nieuw bent, zou je het gemakkelijk genoeg moeten begrijpen.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Het drukt ze allemaal af zonder aanhalingstekens, zoals je wilde.
Antwoord 3, autoriteit 10%
Alleen afdrukken gebruiken:
>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b
4, Autoriteit 8%
Als u Python3 gebruikt:
print('[',end='');print(*L, sep=', ', end='');print(']')
5, Autoriteit 2%
Hier is een interactieve sessie met een aantal van de stappen in @ TokenmacGuy’s one-liner. Eerst gebruikt hij de map
-functie om elk item in de lijst naar een string te converteren (eigenlijk maakt hij een nieuwe lijst en converteert de items niet in de oude lijst). Dan gebruikt hij de stringmethode join
om die snaren te combineren met ', '
ertussen. De rest is slechts een string-opmaak, wat vrij eenvoudig is. (EDIT: Dit exemplaar is eenvoudig; String-opmaak in het algemeen kan enigszins complex zijn.)
Houd er rekening mee dat het gebruik van join
een eenvoudige en efficiënte manier is om een tekenreeks te bouwen van verschillende substrings, veel efficiënter dan het doen door achtereenvolgens strings aan snaren toe te voegen, wat veel kopiëren achter de scènes.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
6
met .format
voor tekenreeksopmaak,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Uitvoer:
[x, 3, b]
Uitleg:
map
wordt gebruikt om elk element van de lijst toe te wijzen aan het typestring
.- De elementen worden samengevoegd tot een string met
,
als scheidingsteken. - We gebruiken
[
en]
in de printopdracht om de lijstaccolades weer te geven.
Referentie:
.format
voor tekenreeksopmaak PEP-3101
Antwoord 7
Ik werd geïnspireerd door @AniMenon om een pythonische, meer algemene oplossing te schrijven.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Het gebruikt alleen de methode format
. Geen spoor van str
, en het zorgt voor de fijnafstemming van het elementenformaat.
Als u bijvoorbeeld zwevende getallen als elementen van de lijst heeft, kunt u hun formaat aanpassen door een conversiespecificatie toe te voegen, in dit geval :.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
De uitvoer is redelijk:
[1.85, -6.33, 4000.21]