为什么这不起作用?''.join(''.join(string).split().remove(str [n]))

Sho*_*len 0 python string join behavior

我正在玩,codingbat.com,我发现这个问题很容易解决,所以我开始尝试打新手代码高尔夫.

给定非空字符串和int n,返回一个新字符串,其中索引n处的char已被删除.n的值将是原始字符串中char的有效索引(即n将在0..len(str)-1的范围内).

missing_char( '小猫',1)→ 'ktten'
missing_char( '小猫',0)→ '伊顿'
missing_char( '小猫',4)→ 'kittn'

Das代码:

def missing_char(str, n):
  return ''.join(' '.join(str).split().remove(str[n]))
Run Code Online (Sandbox Code Playgroud)

奇怪的是,Python不会解释这一点.
为什么不?

Ada*_*ner 11

这是因为remove退货None.python中的大多数(全部?)内置函数都会改变一个值返回值None.

因此,你的外在join试图加入任何东西.


ret*_*ile 8

不是你的问题的直接答案,但这似乎是一个非常难的做法切片......

def missing_char(s, n):
    return s[:n] + s[n+1:]
Run Code Online (Sandbox Code Playgroud)