在Python中经常会遇到列表中元素转换为字符串,字符串转换为列表,将字符串打散的等问题。下面依次说下我的做法:
1. 读入整数
在做一些OJ时,经常碰到读取输入的整数,如果是读入单个整数,可以用
x = input()
这样x返回的结果就是整数,无需转换,但如果输入是
123 456 78
这样的,光靠input()就比较吃力。可以这样
>>> inList = raw_input() #读取原始输入字符串
123 456 78
>>> inList
'123 456 78' #结果为一个字符串
>>> inList = inList.split() #把长字符串按空格分隔,打散成多个字符串
>>> inList
['123', '456', '78'] #变成了多个字符串
>>> inList = [int(inList[i]) for i in range(len(inList))] #把字符串转为整型
>>> inList
[123, 456, 78] #得到了输入的整数,按索引获取相应值
这里变量的转换过程没有用新的变量名,这里是为了方便,也是因为Python支持动态类型,可能对刚学Python且有c/c++编程习惯的同学来说不习惯。
2. 整型列表转为字符串
>>> inList = [1, 2, 3, 4]
>>> inList
[1, 2, 3, 4]
>>> inList = [str(inList[i]) for i in range(len(inList))]
>>> inList
['1', '2', '3', '4']
>>> ('').join(inList)
'1234'
3. 字符串的打散及组合
打散
>>> s = list(s)
>>> s = 'hello'
>>> s
'hello'
>>> s = list(s)
>>> s
['h', 'e', 'l', 'l', 'o'] #打散后的结果,如果是要把整数打散,则要先转为字符串
>>> s=list('hello')
>>> str = ''
>>> for i in s:
... str += i
...
>>> str
'hello'
这里会出现...和一行空行是因为在交互端做的。
组合2
利用join函数,更方便
>>> s=list('hello')
>>> s
['h', 'e', 'l', 'l', 'o']
>>> s = ('').join(s)
>>> s
'hello'