迭代str列表以创建带空格的字符串

时间:2013-12-09 21:17:13

标签: python string list

我有:

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

我需要:

'h e l l o'

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

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

然而,结果是:

new_str = 'h e l l o '

有没有办法在o之后没有空字符串的情况下执行此操作?在我已经得到结果之后没有做某事。

抱歉,我忘了提到是否有办法通过遍历列表来做到这一点。

4 个答案:

答案 0 :(得分:9)

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

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

>>> print mystr

'h e l l o'

这是最简单,最干净的方式,但是 如果由于某种原因必须使用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] 

答案 1 :(得分:6)

使用str.join

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

修改

我认为你说你必须使用for循环。如果是这样,你可以使用它:

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

但是请注意,如果您的列表包含空格,则最后应使用slicing而不是str.strip

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

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

答案 2 :(得分:1)

您可以执行类似

的操作
string = ""
for letter in "hello":
    string += letter + " "

string = string[:-1]

最后一行只删除尾随空格。阅读切片here。或者使用string = string.strip(),它总是删除一般情况下的尾随空格。

如果您不一定要使用显式循环,我建议使用str.join(),如其他答案中所示。

答案 3 :(得分:0)

有些不同,但仍然不如简单的str.join

那么优雅
>>> print ''.join(reduce(lambda a, b: a + ' ' + b, letters))