2016-08-05 6 views
0

私は次のコードを試しましたが、それは私にerror.Howを与えていますこの問題を解決する必要がありますか?いいえ。リストの各要素の数字のうち

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

'マップ(ラムダV:int型(math.log10(V))+ 1、mylistという)' – ewcz

答えて

0

あなたはlog10()関数にリストを渡している、そしてそれはフロートを受け入れながら、それはです。あなたは、リスト内のすべての項目のログを計算するために、リストの内包表記を使用することができます。

>>> 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) 
関連する問題