gpt4 book ai didi

python 连接、映射和 lambda 方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:03 25 4
gpt4 key购买 nike

我是 python 的新手。谁能解释一下这一行

exec("print(' '.join(map(lambda x: s[x::{0}], range({0}))))".format(ceil(sqrt(len(s)))))

s[x::{0}]range({0})) 是什么意思?

在下面的一段代码中详细介绍?

此代码是以下 hackerrank 问题的解决方案: https://www.hackerrank.com/challenges/encryption/problem

#!/bin/python3

import sys
from math import ceil, floor, sqrt


def encryption(s):
exec("print(' '.join(map(lambda x: s[x::{0}], range({0}))))".format(ceil(sqrt(len(s)))))

if __name__ == "__main__":
s = input().strip()
result = encryption(s)

最佳答案

这是您的代码的简化版本,您应该能够遵循:

from math import ceil, sqrt

s = 'hello'

y = ceil(sqrt(len(s)))
# 3

res = ' '.join(map(lambda x: s[x::y], range(y)))
# 'hl eo l'

要点

  • ys 长度的四舍五入平方根,在本例中 sqrt(5) 四舍五入为 3。
  • lambda 是一个匿名函数,它映射 range(y) 中的每个值,即 0, 1, 2 映射到 s[x::y],即返回从索引 x 开始的序列的每个 y 元素。另见 Understanding Python's slice notation . xrange(y) 成员的任意符号。
  • 将所有结果值与一个空格连接起来形成一个字符串。
  • 在您的原始代码中,{0}str.format 用于将 y 合并到一行中的字符串中。在这种情况下,我认为这是令人费解的不良做法。

关于python 连接、映射和 lambda 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49360784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com