Python.是否可以从循环中制作一个单线,其中变量的值不断增加



很抱歉,如果我提出一个重复的问题,但对此一无所知。如果可以以不同的方式提出问题,请随时提出建议或编辑。

目标是将任何基于N的整数转换为十进制整数。

from string import digits, ascii_uppercase

def convert_n_to_10(number, n):
    alphabet = digits + ascii_uppercase
    result_10 = 0
    for i in range(len(str(number))):
        result_10 = result_10 * n + alphabet.index(str(number)[i])
    return result_10

问题是从这个循环中制作单线的可能性不断增加。

for i in range(len(str(number))):
    result_10 = result_10 * n + alphabet.index(str(number)[i])

谢谢。

转向您的

是直接的
    result_10 = 0
    for i in range(len(str(number))):
        result_10 = result_10 * n + alphabet.index(str(number)[i])
    return result_10

进入这个:

    return reduce(lambda result_10, i: result_10 * n + alphabet.index(str(number)[i]),
                  range(len(str(number))),
                  0)

请注意,我简单地复制了主要部分(计算表达式,迭代和初始值),甚至没有阅读它们。

(在Python 3中,您需要从functools模块导入reduce。)

return sum([pow(n, len(x)-i) * alphabet.index(x[i])
           for i in range(len(x))])

计算数字中每个位置的 n 的适当功率(已作为字符串;无需转换),并乘以数字值。

更好,正如约瑟夫斯(Josephible)提醒我们的那样:

return int(x, n)

相关内容

最新更新