Ich habe:

letters = ['h','e','l','l','o']

Und ich brauche:

'h e l l o'

Deshalb habe ich versucht, eine for-Schleife wie folgt zu verwenden:

new_str = ''
for str in letters:
    new_str += str + ' '

Das Ergebnis ist jedoch:

new_str = 'h e l l o '

Gibt es eine Möglichkeit, dies ohne die leere Zeichenfolge nach dem o zu tun? wie in ohne etwas zu tun, nachdem ich bereits das Ergebnis erhalten habe.

Es tut mir leid, dass ich vergessen habe zu erwähnen, ob es eine Möglichkeit gibt, dies durch Durchlaufen der Liste zu tun.

1
user3050527 10 Dez. 2013 im 01:17

4 Antworten

Beste Antwort
>>> letters = ['h','e','l','l','o']

>>> mystr = ' '.join(letters)

>>> print mystr

'h e l l o'

Das ist der einfachste und sauberste Weg, aber wenn Sie aus irgendeinem Grund eine for-Schleife verwenden müssen, können Sie Folgendes tun:

mystr = ''
# this keeps the whole operation within the for loop
for i in range(len(letters)):
    mystr += letters[i] + ' '
    if i == len(letters)-1: # this condition will be tested each iteration, but it seemed more in keeping with your question
        mystr = mystr[:-1] 
9
Totem 16 Jän. 2014 im 10:46

Verwenden Sie str.join:

>>> letters = ['h','e','l','l','o']
>>> " ".join(letters)
'h e l l o'
>>>

Bearbeiten:

Ich denke, Sie sagen, dass Sie eine for-Schleife verwenden müssen. Wenn ja, können Sie dies verwenden:

>>> letters = ['h','e','l','l','o']
>>> mystr = ""
>>> for letter in letters:
...     mystr += letter + " "
...
>>> mystr.strip()
'h e l l o'

Beachten Sie jedoch, dass Sie, wenn Ihre Liste Leerzeichen enthält, am Ende Slicing anstelle von str.strip:

>>> mystr[:-1]
'h e l l o'
>>>

Auf diese Weise entfernen Sie keine Leerzeichen an den Enden, die dort vorhanden sein sollten.

6
Community 23 Mai 2017 im 11:44

Etwas anderes, aber immer noch nicht so elegant wie einfaches str.join

>>> print ''.join(reduce(lambda a, b: a + ' ' + b, letters))
0
smac89 9 Dez. 2013 im 22:00

Sie könnten so etwas tun

string = ""
for letter in "hello":
    string += letter + " "

string = string[:-1]

Diese letzte Zeile entfernt einfach das nachfolgende Leerzeichen. Lesen Sie hier, wie Sie in Scheiben schneiden. Verwenden Sie alternativ string = string.strip(), wodurch im allgemeinen Fall immer der nachgestellte Leerzeichen entfernt wird.

Wenn Sie nicht unbedingt eine explizite Schleife verwenden müssen, würde ich empfehlen, mit str.join() zu arbeiten, wie in den anderen Antworten gezeigt.

1
Milo Wielondek 9 Dez. 2013 im 21:32