今天写 python 100 例时,有个题目是大致是这样的:已知输入形式是 1+3+2+1,要求输出形式为 1+1+2+3
一开始思路是将输入的字符串用 split() 函数划分成数组,在对数组进行排序,再用 for 循环输出
代码附上:
a = map(int,raw_input().split('+'))
a = sorted(a)
for i in a:
if(i != len(a)):
print i,'+'
else:
print i
虽然能够输出正确结果,但是代码过于繁琐.由于先前学习 C 语言,也做过相关算法练习,所以思想被固定.
再看了一下大神的代码,简直膜拜了.
代码附上:
print "+".join(sorted(raw_input()[::2]))
代码简洁,python 函数很熟悉.所以去查了一下 join 相关知识,以下有较全的解释及例子.
函数:string.join()
Python 中有 join() 和 os.path.join() 两个函数,具体作用如下:
join(): 连接字符串数组.将字符串,元组,列表中的元素以指定的字符 (分隔符) 连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
一,函数说明
1,join() 函数
语法: 'sep'.join(seq)
参数说明
sep:分隔符.可以为空
seq:要连接的元素序列,字符串,元组,字典
上面的语法即:以 sep 作为分隔符,将 seq 所有的元素合并成一个新的字符串
返回值:返回一个以分隔符 sep 连接各个元素后生成的字符串
2,os.path.join() 函数
语法: os.path.join(path1[,path2[,......]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
二,实例
#对序列进行操作 (分别使用' '与':'作为分隔符) >>> seq1 = ['hello', 'good', 'boy', 'doiido'] >>> print ' '.join(seq1) hello good boy doiido >>> print ':'.join(seq1) hello: good: boy: doiido#对字符串进行操作 >>> seq2 = "hello good boy doiido" >>> print ':'.join(seq2) h: e: l: l: o: :g: o: o: d: :b: o: y: :d: o: i: i: d: o#对元组进行操作 >>> seq3 = ('hello', 'good', 'boy', 'doiido') >>> print ':'.join(seq3) hello: good: boy: doiido#对字典进行操作 >>> seq4 = {
'hello': 1,
'good': 2,
'boy': 3,
'doiido': 4
} >>> print ':'.join(seq4) boy: good: doiido: hello#合并目录 >>> import os >>> os.path.join('/hello/', 'good/boy/', 'doiido')'/hello/good/boy/doiido'
来源: http://www.cnblogs.com/Suomy/p/5763905.html