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之后没有空字符串的情况下执行此操作?在我已经得到结果之后没有做某事。
抱歉,我忘了提到是否有办法通过遍历列表来做到这一点。
答案 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))