[python]Re: pythonで0.0から50.0までの0.1刻みの数値のリストを作りたいんだけど、どうするのがいいんだろう?

なんかうまいやりかたないのかな?rangeのstepは整数しかだめだし、、

http://d.hatena.ne.jp/suzuki-shin/20110205#1296883027

について親切な人が(二人も)コメントで教えてくれたので、そのやりかたで(50.0までだと多いので5.0までで)やってみた。

>>> [i / 10.0 for i in range(5 * 10)]
[i / 10.0 for i in range(5 * 10)]
[0.0, 0.10000000000000001, 0.20000000000000001, 0.29999999999999999, 0.40000000000000002, 0.5, 0.59999999999999998, 0.69999999999999996, 0.80000000000000004, 0.90000000000000002, 1.0, 1.1000000000000001, 1.2, 1.3, 1.3999999999999999, 1.5, 1.6000000000000001, 1.7, 1.8, 1.8999999999999999, 2.0, 2.1000000000000001, 2.2000000000000002, 2.2999999999999998, 2.3999999999999999, 2.5, 2.6000000000000001, 2.7000000000000002, 2.7999999999999998, 2.8999999999999999, 3.0, 3.1000000000000001, 3.2000000000000002, 3.2999999999999998, 3.3999999999999999, 3.5, 3.6000000000000001, 3.7000000000000002, 3.7999999999999998, 3.8999999999999999, 4.0, 4.0999999999999996, 4.2000000000000002, 4.2999999999999998, 4.4000000000000004, 4.5, 4.5999999999999996, 4.7000000000000002, 4.7999999999999998, 4.9000000000000004]
>>> 

Decimalを使って

>>> from decimal import Decimal
from decimal import Decimal
>>> [Decimal(i) / Decimal(10) for i in range(5 * 10)]
[Decimal(i) / Decimal(10) for i in range(5 * 10)]
[Decimal('0'), Decimal('0.1'), Decimal('0.2'), Decimal('0.3'), Decimal('0.4'), Decimal('0.5'), Decimal('0.6'), Decimal('0.7'), Decimal('0.8'), Decimal('0.9'), Decimal('1'), Decimal('1.1'), Decimal('1.2'), Decimal('1.3'), Decimal('1.4'), Decimal('1.5'), Decimal('1.6'), Decimal('1.7'), Decimal('1.8'), Decimal('1.9'), Decimal('2'), Decimal('2.1'), Decimal('2.2'), Decimal('2.3'), Decimal('2.4'), Decimal('2.5'), Decimal('2.6'), Decimal('2.7'), Decimal('2.8'), Decimal('2.9'), Decimal('3'), Decimal('3.1'), Decimal('3.2'), Decimal('3.3'), Decimal('3.4'), Decimal('3.5'), Decimal('3.6'), Decimal('3.7'), Decimal('3.8'), Decimal('3.9'), Decimal('4'), Decimal('4.1'), Decimal('4.2'), Decimal('4.3'), Decimal('4.4'), Decimal('4.5'), Decimal('4.6'), Decimal('4.7'), Decimal('4.8'), Decimal('4.9')]
>>> 

Decimalというのは知らなかったです。勉強になります。*1

*1:Decimalだと10進数を正確に表現できるとのこと http://www.python.jp/doc/2.5/lib/module-decimal.html