为什么这个不行?''.join(' '.join(string).split().remove(str[n]))
我在玩 codingbat.com
的时候,发现了一个很简单的问题可以解决,所以我开始尝试写一些新手级别的代码。
题目是这样的:给你一个非空的字符串和一个整数 n,返回一个新的字符串,这个新字符串是把原字符串中索引为 n 的字符去掉后的结果。n 的值一定是原字符串中字符的有效索引(也就是说,n 的范围是从 0 到 字符串长度减 1)。
比如:
missing_char('kitten', 1) → 'ktten'
missing_char('kitten', 0) → 'itten'
missing_char('kitten', 4) → 'kittn'
代码如下:
def missing_char(str, n):
return ''.join(' '.join(str).split().remove(str[n]))
奇怪的是,Python 不会执行这个代码。
这是为什么呢?
3 个回答
2
简化版
missing_char=lambda s,n:s[:n]+s[n+1:]
9
这不是直接回答你问题的内容,但看起来你这样做切片的方法有点复杂...
def missing_char(s, n):
return s[:n] + s[n+1:]
13
这是因为 remove
这个函数执行后会返回 None
。在 Python 中,大多数(可能是所有)内置的会改变值的函数,最后都会返回 None
。
所以你外面的 join
函数其实是在尝试把“什么都没有”的东西连接在一起。