Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Lambda:将给定的带基数的数字转换为十进制_Python_Python 2.7_Lambda - Fatal编程技术网

Python Lambda:将给定的带基数的数字转换为十进制

Python Lambda:将给定的带基数的数字转换为十进制,python,python-2.7,lambda,Python,Python 2.7,Lambda,在数学中,将以5为基数的数字n转换为以10为基数的数字是14。我知道如何得到14与以下工作 24base5 = 2*5^1 + 4*5^0 = 14 我想在一个单行程序中使用lambda实现这一点。然而,我不知道如何减少权力。当前不工作的编码如下所示: n = 24 x = 5 print map(lambda n : n * x ** 1, n) 我确实知道如何使x**1随着循环而减小 编辑:我想知道如何将数字也转换为基数16您可以使用int将数字从基数10解析为另一个基数

在数学中,将以5为基数的数字
n
转换为以10为基数的数字是14。我知道如何得到14与以下工作

24base5 = 2*5^1 + 4*5^0
        = 14
我想在一个单行程序中使用lambda实现这一点。然而,我不知道如何减少权力。当前不工作的编码如下所示:

n = 24
x = 5
print map(lambda n : n * x ** 1, n)
我确实知道如何使
x**1
随着循环而减小


编辑:我想知道如何将数字也转换为基数16

您可以使用
int
将数字从基数10解析为另一个基数:

>>> int('24', 5)
14

# or as a lambda function:
>>> c = lambda n, b: int(str(n), b)
>>> c(24, 5)
14

# convert to hex
>>> hex(c(24,5))[2:]
'e'

您可以使用
int
将数字从基数10解析到另一个基数:

>>> int('24', 5)
14

# or as a lambda function:
>>> c = lambda n, b: int(str(n), b)
>>> c(24, 5)
14

# convert to hex
>>> hex(c(24,5))[2:]
'e'

如果您想自己实现它而不是使用
int
,那么您可以在
lambda
中使用
sum
函数和
for
循环(请注意
for
循环从头到尾遍历
num
的字符串表示):


如果您想自己实现它而不是使用
int
,那么您可以在
lambda
中使用
sum
函数和
for
循环(请注意
for
循环从头到尾遍历
num
的字符串表示):



@StefanPochmann,你说得很对。但是,我们可以同时使用它,因为有
str(n)
。但是对于这个任务来说,使用纯int参数的版本更好。谢谢。我还可以知道如何在不使用hex()@Kode.Error404的情况下更改您转换为十六进制的答案吗?您想避免使用
hex()
?为什么?有了它,你可以嵌套它们:
hex(c(24,5))
。我正在尝试将24进制5转换为16进制,因此我尝试将其转换为10进制,然后转换为16进制。hex似乎不起作用。我问如何转换是因为我想学习如何转换成10进制,但现在我用这个
打印十六进制(int(str(n),x))[2://code>@StefanPochmann,你说得很对。但是,我们可以同时使用它,因为有
str(n)
。但是对于这个任务来说,使用纯int参数的版本更好。谢谢。我还可以知道如何在不使用hex()@Kode.Error404的情况下更改您转换为十六进制的答案吗?您想避免使用
hex()
?为什么?有了它,你可以嵌套它们:
hex(c(24,5))
。我正在尝试将24进制5转换为16进制,因此我尝试将其转换为10进制,然后转换为16进制。hex似乎不起作用。我问如何转换是因为我想知道如何转换成10进制,但现在我发现它是通过这个
打印十六进制(int(str(n),x))[2:
我可以知道为什么这个
打印lambda num,base:sum(int(digital)*base**索引,枚举中的数字(str(num)[:-1])
打印一个地址?@Kode.Error404因为您打印的是函数的内存地址,而不是调用它的结果。有没有一种方法可以直接打印而不必像以前那样调用它?您可以用括号括住整个
lambda
定义,然后调用它:
打印(lambda num,base:sum(int(digital))*base**index for index,digital in enumerate(str(num)[::-1]))(24,5)
我可以知道为什么打印lambda num,base:sum(int(digital)*base**index for index,digital in enumerate(str(num)[:-1])
打印一个地址?@Kode.Error404因为您打印的是函数的内存地址,而不是调用它的结果。有没有一种方法可以直接打印而不必像以前那样调用它?您可以用括号括住整个
lambda
定义,然后调用它:
打印(lambda num,base:sum(int(digital))*基本**索引,枚举中的数字(str(num)[:-1]))(24,5)