为了账号安全,请及时绑定邮箱和手机立即绑定

仅使用抽象列表函数将字符串中的每个字母乘以其在字符串中的位置

仅使用抽象列表函数将字符串中的每个字母乘以其在字符串中的位置

波斯汪 2022-06-22 15:54:08
给定一个字符串,我想创建一个函数,将给定字符串中的每个字母在字符串中的位置相乘。例如,extend('cat') 应该产生 'caattt'。我只被允许使用抽象列表函数:list()、、、和(也允许递归map(),但不允许使用任何类型的循环)。filter()lambda下面的代码是我尝试过的,我正在尝试提取每个字母以及位置并使用它们。也许我不明白 map 和 lambda 是如何工作的,但这是我的方法。def extend(s):  index = range(1, len(s) - 1)  return list(map(lambda k: k*(lambda x: x, index), s))
查看完整描述

4 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

您可以使用可选参数来跟踪当前递归调用的字符串第一个字符的乘数:

def extend(s, count=1):
    return s and s[0] * count + extend(s[1:], count + 1)

这样extend('cat')返回:'caattt'


查看完整回答
反对 回复 2022-06-22
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以将给定的字符串和一个range对象1以及字符串的长度映射到一个lambda函数,该函数返回给定字符重复给定计数:

def extend(s):
    return ''.join(map(lambda char, count: char * count, s, range(1, len(s) + 1)))

这样extend('cat')返回:'caattt'


查看完整回答
反对 回复 2022-06-22
?
翻阅古今

TA贡献1780条经验 获得超5个赞

这可能不符合您的限制:

"".join([x*(i+1) for i,x in enumerate(s)])


查看完整回答
反对 回复 2022-06-22
?
月关宝盒

TA贡献1772条经验 获得超5个赞

省略使用的另一种可能的解决方案for是使用index字符串的属性:

def extend(s):
    l = lambda x: x*(s.index(x) + 1)
        return "".join(map(l, list(s)))

为了:

extend('cat`)

这输出

caattt


查看完整回答
反对 回复 2022-06-22
  • 4 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信