数値のリストを受け取り、いくつかの桁で丸められた数値のリストを返す非常に単純な関数を作成しました。
def rounded(lista, digits = 3):
neulist = []
for i in lista:
neulist.append(round(i, digits))
return neulist
ただし、組み込み関数ではなく関数自体を誤ってコードに入れましたround()
(以下の例のように)。
def rounded(lista, digits = 3):
neulist = []
for i in lista:
neulist.append(rounded(i, digits))
return neulist
そして、この出力を得ました:
Traceback (most recent call last):
File "<pyshell#286>", line 1, in <module>
rounded(a)
File "<pyshell#284>", line 4, in rounded
neulist.append(rounded(i, digits))
File "<pyshell#284>", line 3, in rounded
for i in lista:
TypeError: 'float' object is not iterable
問題は、関数自体rounded()
を評価しているときに関数を適用する必要があることをインタプリタがどのように知るかです。rounded()
まさにその関数を解釈しようとしている場合、どうrounded()
すれば浮動小数点数を取る関数になるのでしょうか? 関数を評価して解釈するための一種の2サイクルの手順はありますか? それとも、ここで何か間違っていますか?