我对 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)
原文由 pythonaddict 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是您的代码的简化版本,您应该能够遵循:
要点
y
是s
长度的四舍五入平方根,在本例中 sqrt(5) 向上舍入为 3。lambda
is an anonymous function which maps each value inrange(y)
, ie0, 1, 2
is mapped tos[x::y]
, ie return everyy
从索引x
开始的序列的第一个元素。另请参阅 了解 Python 的切片表示法。x
是range(y)
成员的任意符号。{0}
和str.format
用于将y
合并到一行中的字符串中。在这种情况下,我认为这是令人费解的不良做法。