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个练习,有一些收获的都会记录下来。
-----------------------------------------------------------------------------------------下一次的分割线