迭代str列表以使用空格制作str

use*_*527 1 python string list

我有:

letters = ['h','e','l','l','o']
Run Code Online (Sandbox Code Playgroud)

我需要:

'h e l l o'
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用for循环如下:

new_str = ''
for str in letters:
    new_str += str + ' '
Run Code Online (Sandbox Code Playgroud)

但结果是:

new_str = 'h e l l o '
Run Code Online (Sandbox Code Playgroud)

有没有办法在o之后没有空字符串?在我已经得到结果之后没有做某事.

对不起,我忘了提到是否有办法通过迭代列表来做到这一点.

Tot*_*tem 9

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

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

>>> print mystr

'h e l l o'
Run Code Online (Sandbox Code Playgroud)

这是最简单,最干净的方法,但如果由于某种原因必须使用for循环,则可以执行以下操作:

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] 
Run Code Online (Sandbox Code Playgroud)


iCo*_*dez 6

用途str.join:

>>> letters = ['h','e','l','l','o']
>>> " ".join(letters)
'h e l l o'
>>>
Run Code Online (Sandbox Code Playgroud)

编辑:

我想你说你必须使用for循环.如果是这样,你可以使用这个:

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

但请注意,如果列表包含空格,则应在末尾使用切片而不是 str.strip:

>>> mystr[:-1]
'h e l l o'
>>>
Run Code Online (Sandbox Code Playgroud)

这样,你不会删除应该在那里的任何空间.

  • 对你们俩来说,OP改变了他的问题.他原来的一个说他希望这些字母是大写的. (4认同)