说我有一个字符串s = 'BINGO'
;我想遍历字符串以产生'B I N G O'
.
这就是我所做的:
result = ''
for ch in s:
result = result + ch + ' '
print(result[:-1]) # to rid of space after O
有没有更有效的方法来解决这个问题?
s = "BINGO"
print(" ".join(s))
应该这样做。
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
一个非常 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'
最有效的方法是接受输入使逻辑和运行
所以代码是这样来制作你自己的空间制造商的
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))