我想輸出一個字符串的旋轉版本。我採取了一個字符串,z="string"
,並創建了一個deque,y=collections.deque(z) (deque(['S','t','r','i','n','g'])
,並使用rotate方法旋轉它。如何「轉換」我旋轉回字符串的deque對象?如何「將」dequed對象「轉換」爲Python中的字符串?
4
A
回答
4
回答你的問題:由於一個deque是sequence,通常可以使用str.join形成從收集的有序元素的字符串。 str.join
在任何Python iterable上的工作更廣泛,從逐個連接在一起的元素形成一個字符串。
,但建議,而不是一個deque和旋轉和加入,你也可以連接在字符串本身片,形成一個新的字符串:
>>> z="string"
>>> rot=3
>>> z[rot:]+z[:rot]
'ingstr'
這是雙向的:
>>> rz=z[rot:]+z[:rot]
>>> rz
'ingstr'
>>> rz[-rot:]+rz[:-rot]
'string'
除了更容易閱讀(恕我直言)它也原來是快了很多:
from __future__ import print_function #same code for Py2 Py3
import timeit
import collections
z='string'*10
def f1(tgt,rot=3):
return tgt[rot:]+tgt[:rot]
def f2(tgt,rot=3):
y=collections.deque(tgt)
y.rotate(rot)
return ''.join(y)
print(f1(z)==f2(z)) # Make sure they produce the same result
t1=timeit.timeit("f1(z)", setup="from __main__ import f1,z")
t2=timeit.timeit("f2(z)", setup="from __main__ import f2,z")
print('f1: {:.2f} secs\nf2: {:.2f} secs\n faster is {:.2f}% faster.\n'.format(
t1,t2,(max(t1,t2)/min(t1,t2)-1)*100.0))
打印:
True
f1: 0.32 secs
f2: 5.02 secs
faster is 1474.49% faster.
2
您可以使用string join method:
''.join(y)
In [44]: import collections
In [45]: z = "string"
In [46]: y = collections.deque(z)
In [47]: ''.join(y)
Out[47]: 'string'
2
正好連接字符字符串中:
''.join(y)
4
只需使用str.join()
方法:
>>> y.rotate(3)
>>> y
deque(['i', 'n', 'g', 's', 't', 'r'])
>>>
>>> ''.join(y)
'ingstr'
2
使用''.join(y)
應該做的伎倆。
1
一個好方法是在字符串上使用join
方法。
''.join(y)
1
您可以使用join()
:
''.join(y)
相關問題
- 1. 將字符串轉換爲對象Python
- 2. 如何將字符串轉換爲python中的datetime對象?
- 3. 將字符串對象轉換爲python中的列表對象
- 4. 如何將字符串對象轉換爲字符串[]?
- 5. Python燒瓶:如何將查詢對象轉換爲字符串?
- 6. 如何將Python對象轉換爲字符串?
- 7. 如何將python time.struct_time對象轉換爲ISO字符串?
- 8. 將Doc對象轉換爲python中的字符串
- 9. 將字符串轉換爲Python中的類對象
- 10. 將numpy.datetime64轉換爲python中的字符串對象
- 11. 如何將字符串對象轉換爲布爾對象?
- 12. 如何將對象字符串轉換爲對象Guid在C#
- 13. 如何將字符串對象轉換爲字符串池對象?
- 14. 將字符串轉換爲gson對象
- 15. 將字符串對象轉換爲istringstream
- 16. 將python'type'對象轉換爲字符串
- 17. 將字符串轉換爲JSON對象
- 18. 將字符串轉換爲JS對象
- 19. 將對象轉換爲字符串
- 20. 將字符串轉換爲對象
- 21. VBScript將對象轉換爲字符串?
- 22. 將對象轉換爲字符串(java)
- 23. 將XML對象轉換爲字符串
- 24. 將對象[,]轉換爲字符串
- 25. 將對象轉換爲字符串
- 26. 將字符串轉換爲DateTime對象
- 27. 將字符串轉換爲json對象
- 28. 將字符串轉換爲datetime.time對象
- 29. 將字符串轉換爲NSDate對象
- 30. Jquery將字符串轉換爲對象
哇。棒極了!謝謝! –
@StephenPaul:謝謝。如果這是有幫助的,請隨時[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – dawg
在這裏使用slice更快,因爲創建使用deque太多時間。 – Windsooon