python:如何在这个简单的while循环中避免“列表索引超出范围”?
我的L1数组里有一些数字,比如0.029999999999999999,我想把它们打印成0.03。
我的代码是可以运行的,但最后会报错,因为最后一个计数超出了范围。我知道为什么会出错,但不知道该怎么修复。谢谢。
count = 1
while L1:
print "%.2f" %L1[count]
count = count + 1
4 个回答
0
L2=["%.2f" %i for i in L1]
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
2
你为什么不直接遍历一下 L1
列表,而非使用一个 while 循环呢?
for i in L1:
print "%.2f" % i
保持简单一点 :)
9
如果你想打印出所有在 L1
里的数字,可以使用:
for x in L1: print '%.2f' % x
如果你想跳过第一个数字,可以用 for x in L1[1:]:
这个方式。
补充说明:提问者在评论中提到,他们其实想要“创建一个新数组”(我想他们实际上是想说“一个新列表”,而不是 array.array
,但这两者差别不大)。在浮点数的世界里没有“四舍五入的数字”——你可以使用 round(x, 2)
,但这样仍然会得到一个浮点数,所以它不一定会“恰好有2位数字”。无论如何,对于一个字符串列表:
newlistofstrings = ['%.2f' % x for x in L1]
或者对于一个包含小数的列表(如果你想的话,这些小数可以恰好有2位数字):
import decimal
newlistofnnumbers = [decimal.Decimal('%.2f') % x for x in L1]