33

说我有一个字符串s = 'BINGO';我想遍历字符串以产生'B I N G O'.

这就是我所做的:

result = ''
for ch in s:
   result = result + ch + ' '
print(result[:-1])    # to rid of space after O

有没有更有效的方法来解决这个问题?

4

4 回答 4

63
s = "BINGO"
print(" ".join(s))

应该这样做。

于 2013-08-14T00:39:10.167 回答
26
s = "BINGO"
print(s.replace("", " ")[1: -1])

下面的时间

$ python -m timeit -s's = "BINGO"' 's.replace(""," ")[1:-1]'
1000000 loops, best of 3: 0.584 usec per loop
$ python -m timeit -s's = "BINGO"' '" ".join(s)'
100000 loops, best of 3: 1.54 usec per loop
于 2013-08-14T00:46:04.413 回答
3

Pythonic 方式

一个非常 Pythonic 和实用的方法是使用 stringjoin()方法:

str.join(iterable)

官方Python 文档说:

返回一个字符串,它是可迭代中字符串的串联...元素之间的分隔符是提供此方法的字符串。

如何使用它?

记住:这是一个字符串方法

此方法将应用于str上述内容,它反映了将用作可迭代项中项目分隔符的字符串。

让我们举一些实际的例子!

iterable = "BINGO"
separator = " " # A whitespace character.
                # The string to which the method will be applied
separator.join(iterable)
> 'B I N G O'

在实践中,你会这样做:

iterable = "BINGO"    
" ".join(iterable)
> 'B I N G O'

但请记住,参数是可迭代的,如字符串、列表、元组。虽然该方法返回一个字符串。

iterable = ['B', 'I', 'N', 'G', 'O']    
" ".join(iterable)
> 'B I N G O'

如果你使用连字符作为字符串会发生什么?

iterable = ['B', 'I', 'N', 'G', 'O']    
"-".join(iterable)
> 'B-I-N-G-O'
于 2020-09-09T03:36:04.933 回答
-1

最有效的方法是接受输入使逻辑和运行

所以代码是这样来制作你自己的空间制造商的

need = input("Write a string:- ")
result = ''
for character in need:
   result = result + character + ' '
print(result)    # to rid of space after O

但是如果你想使用 python 给出的,那么使用这个代码

need2 = input("Write a string:- ")

print(" ".join(need2))
于 2021-02-21T13:18:06.897 回答