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

给定一个字符串,我想创建一个函数,将给定字符串中的每个字母在字符串中的位置相乘。


例如,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))


波斯汪
浏览 166回答 4
4回答

慕标5832272

您可以使用可选参数来跟踪当前递归调用的字符串第一个字符的乘数:def extend(s, count=1):     return s and s[0] * count + extend(s[1:], count + 1)这样extend('cat')返回:'caattt'

梵蒂冈之花

您可以将给定的字符串和一个range对象1以及字符串的长度映射到一个lambda函数,该函数返回给定字符重复给定计数:def extend(s):     return ''.join(map(lambda char, count: char * count, s, range(1, len(s) + 1)))这样extend('cat')返回:'caattt'

翻阅古今

这可能不符合您的限制:"".join([x*(i+1) for i,x in enumerate(s)])

月关宝盒

省略使用的另一种可能的解决方案for是使用index字符串的属性:def extend(s):     l = lambda x: x*(s.index(x) + 1)         return "".join(map(l, list(s)))为了:extend('cat`)这输出caattt
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python