列表排序后使用join报错TypeError: can only join an iterable

情况:想对一行给定的字符串,按字母顺序排序后输出。排序采用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)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值