python:如何在这个简单的while循环中避免“列表索引超出范围”?

1 投票
4 回答
4520 浏览
提问于 2025-04-15 16:26

我的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]

撰写回答