python元组仅使用更高阶函数删除第一个匹配外观

Boo*_*oom 3 python tuples

我想写一个Rem(a, b)返回一个新元组的东西,就像删除a元素的第一个外观一样b.例如

Rem((0, 1, 9, 1, 4), 1)将返回(0, 9, 1, 4).

我只允许使用更高阶函数,如lambda,filter,map和reduce.

我正在考虑使用过滤器,但这将删除所有匹配元素

def myRem(T, E):
    return tuple(filter(lambda  x: (x!=E), T))
Run Code Online (Sandbox Code Playgroud)

myRem((0, 1, 9, 1, 4), 1) 我会有 (0,9,4)

dam*_*res 6

以下作品(警告: hacky代码):

tuple(map(lambda y: y[1], filter(lambda  x: (x[0]!=T.index(E)), enumerate(T))))
Run Code Online (Sandbox Code Playgroud)

但除非要求严格,否则我绝不会建议这样做

  • 我建议你把`T.index(E)`移到外面以防止多次计算. (2认同)
  • 是的我知道,你也使用`enumerate()`等等.我的观点并不是你错了,但是这些任意的限制问题总是不清楚(通常是错误的IMO),如果按字面解释几乎不可能! (2认同)