情况:想对一行给定的字符串,按字母顺序排序后输出。排序采用sort方法,因str没sort方法,故先将str转为列表,再用join方法将列表中分散的字母连接成字符串。
问题:报错TypeError: can only join an iterable
string = 'daibahgk'
li = list(string) # 将字符串转换为列表['d', 'a', 'i', 'b', 'a', 'h', 'g', 'k']
s = li.sort() # 对列表里的字母进行排序
new_string = "".join(s)
解决:思路是正确的。报错原因是join括号里需要一个可迭代的值,s是列表怎么不可迭代呢?用print函数将s打印一下,发现s的值是None。问题出在sort()这里。查询有关sort资料,原来sort只对列表本身排序,它没有返回值。将一个空的值赋给s,那么s是None就不出奇了。将代码改为如下,就可以运行了。
string = 'daibahgk'
li = list(string) # 将字符串转换为列表['d', 'a', 'i', 'b', 'a', 'h', 'g', 'k']
li.sort() # 对列表里的字母进行排序
new_string = "".join(li)