2016-08-05 27 views
0

我试过下面的代码,但它给了我一个错误。我该如何解决这个问题?找到没有。列表中每个元素的数字

import math 
mylist=[3,4,12,34] 
digits = int(math.log10(mylist))+1 


Traceback (most recent call last): 
File "prog.py", line 3, in <module> 
TypeError: a float is required 
+0

'地图(拉姆达ν:INT(math.log10(V))+ 1,MYLIST)' – ewcz

回答

0

您正在向log10()函数传递一个列表,并且它接受一个float。您可以使用列表理解来计算日志列表中的所有项目:

>>> digits = [int(math.log10(i)) + 1 for i in mylist] 
>>> digits 
[1, 1, 2, 2] 
1

这将返回包含my_list的每个元素的位数的列表。

from math import log10 

my_list = [3, 4, 12, 34] 
digits = [int(log10(n) + 1) for n in my_list] 
0

这里的一个工作示例:

import math 


def f(x): 
    return int(math.log10(x)) + 1 

mylist = [3, 4, 12, 34] 
digits = [] 

for x in mylist: 
    fx = f(x) 
    print("f({0})={1}".format(x, fx)) 
    digits.append(fx) 
相关问题