编程语言
首页 > 编程语言> > python join,map和lambda方法

python join,map和lambda方法

作者:互联网

我是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'

要点

> y是s长度的四舍五入的平方根,在这种情况下,sqrt(5)被四舍五入为3.
> lambda是一个匿名函数,它映射range(y)中的每个值,即0、1、2映射到s [x :: y],即返回从索引x开始的序列的每个yth元素.另请参见Understanding Python’s slice notation.x是range(y)成员的任意符号.
>用空格将所有结果值连接在一起以形成单个字符串.
>在原始代码{0}和str.format中,将y以单行形式包含在字符串中.在这种情况下,我认为它是令人费解的和不明智的做法.

标签:python-3-x,string-formatting,python
来源: https://codeday.me/bug/20191109/2012241.html