python中的list有reverse方法,但是字符串卻沒有,怎么辦呢?
csdn博主有列了幾個方法,我覺得第一個最簡單直接,str[::-1]搞定。
當然也有一種怪異的方法,我把字符串轉為序列reverse一下,再轉回來不就好了么....
''.join(list(a_string).reverse()),估計很多人會想到這樣,但運行一下報錯了,為啥,因為reverse方法并不會返回逆序后的list....
那還是老老實實的建一個臨時變量吧。
b = list(a)
b.reverse()
''.join(b)
還有一個很強勢的eval函數,我一直被告知不要太使用這個,但沒想到這個還是很強的。
我組一個字符串:
a = '3+4*5*6'
eval(a)會直接得到123,666.
就當劇透吧。
程序員的算法趣題的第二題,用這個簡直了。
我自己還是在用傳統的分類來去解決,結果漏了情況,死翹翹了。
不夠書里面的算法看上去真的很不友好。
另外,range這個也是左閉右開。
另外,自己也寫了一個十進制轉化為2進制和8禁止的方法,給大家貼一下吧。
1 def convert_two(number): 2 '''將一個十進制的數轉換為一個二進制的數''' 3 ls = [] 4 while (number//2 != 0): 5 ls.insert(0, str(number%2)) 6 number = number//2 7 ls.insert(0, str(number%2)) 8 return ''.join(ls) 9 10 11 12 def convert_eight(number): 13 '''將一個十進制的數轉換為一個二進制的數''' 14 ls = [] 15 while (number//8 != 0): 16 ls.insert(0, str(number%8)) 17 number = number//8 18 ls.insert(0, str(number%8)) 19 return ''.join(ls)
比較坑的是,書中竟然告訴我,python中本來就有這個轉換函數,直接調用就好,我一口老血噴了出來!
現在做了2個練習,有一些收獲的都會記錄下來。
-----------------------------------------------------------------------------------------下一次的分割線