首页 > 解决方案 > 仅使用抽象列表函数将字符串中的每个字母乘以其在字符串中的位置(从 1 开始)

问题描述

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

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

标签: pythonpython-3.xlist

解决方案


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

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

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


推荐阅读