2017-04-20 74 views
0

扭轉一個字符串是什麼'。加入(目的)這裏
爲什麼要使用join()方法的功能,而在蟒蛇

print(''.join(reversed(a))) 

我們不能扭轉一個字符串僅與反向功能

print(reversed("python")) 
+1

這不是你的具體問題的答案,但是你可以在沒有'join'和'reversed'的情況下反轉一個字符串:'revstring = mystring [:: - 1]'。 – VPfB

+0

你有沒有打過電話的代碼? –

回答

4

不,你不能簡單地通過調用reversed做到這一點。 reversed返回一個特殊的reversed迭代器對象,它需要迭代以產生它的元素。

不提供給.join這裏只會打印出reversed對象的令人困惑的repr對象:<reversed object at 0x7f2ba02be320>

調用"".join,這需要一個迭代作爲參數,消耗reversed對象並加入元素產生你看到的字符串。

注意到,還有其他的方式來使用它,而不join導致不同的對象,list,例如,將採取reversed對象,並創建一個列表出來它產生的元素:

a = reversed('abcd') 
print(list(a)) 
['d', 'c', 'b', 'a'] 

如果你最後需要一個字符串,那麼最好的選擇是.join

0

你可以操縱str一樣list

a = 'abcd' 
a[::-1] #'dcba' 
0

join目的是採取迭代和分隔符加入它產生一個字符串:

''.join(reversed(a)) 

a可以是迭代支持迭代協議或重載對象__getitem__。也就是說,您通常想要在for循環或理解中使用的任何對象,或者您想迭代以產生結果並將它們作爲字符串進行迭代,該對象可能是join的潛在值。

reversed返回您需要迭代的對象以便獲取其值join中的值。所以''.join(reversed(a))意味着以下內容:首先反向a,然後迭代reversed的結果對象,並按照join指定的分隔符連接每個提取的對象,在這種情況下,它只是一個空字符串。

難道我們不能只用反轉函數來反轉字符串嗎?

不是真的!您可以使用此表達式而不是reversed函數:'stackoverflow'[::-1]來反轉字符串。像往常一樣,可以通過幾種方法在編程中實現相同的效果。