python - 仅使用抽象列表函数将字符串中的每个字母乘以其在字符串中的位置(从 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))
解决方案
您可以使用可选参数来跟踪当前递归调用的字符串第一个字符的乘数:
def extend(s, count=1):
return s and s[0] * count + extend(s[1:], count + 1)
这样extend('cat')
返回:'caattt'
推荐阅读
- php - 如何在 PHP 中替换数组数组中的空白或空值
- c# - 如何在 Unity 中执行撤消操作?
- jmeter - 使用 jMeter 将文件上传到 API 或 Web 服务
- sql - 在 T-SQL 中创建具有多个属性的 XML
- sql - 如何在 oracle 中获取最新的更新记录?
- python - 如何使用python基于正则表达式拆分大文本文件
- excel - Uipath 错误:“此工作簿中可能没有宏”?
- php - 使用 phpseclib 在 Laravel 中实时 SSH 输出
- ios - 在没有 ARKit 的情况下,我如何测量 iPhone 拍摄的照片中物体的大小?
- mysql - 仅过滤每个主外键关系上的连接