Python 巨蟒:我如何避免;列表索引超出范围“;在这个简单的while循环中

Python 巨蟒:我如何避免;列表索引超出范围“;在这个简单的while循环中,python,loops,while-loop,Python,Loops,While Loop,我的L1数组包含像0.0299999999999这样的数字,我想将其打印为0.03 我的代码可以工作,但在最后给出了一个错误,因为最后一次计数超出了范围。我知道它为什么坏了,但不知道如何修理。谢谢 count = 1 while L1: print "%.2f" %L1[count] count = count + 1 如果要打印L1中的所有数字,请使用: for x in L1: print '%.2f' % x 如果要跳过第一个选项,L1[1::::中的x将起作用 编辑

我的L1数组包含像0.0299999999999这样的数字,我想将其打印为0.03

我的代码可以工作,但在最后给出了一个错误,因为最后一次计数超出了范围。我知道它为什么坏了,但不知道如何修理。谢谢

count = 1

while L1:
    print "%.2f" %L1[count]
    count = count + 1

如果要打印
L1
中的所有数字,请使用:

for x in L1: print '%.2f' % x
如果要跳过第一个选项,L1[1::::中的x将起作用

编辑:OP在评论(!)中提到他们的愿望实际上是“创建一个新数组”(我想他们实际上是指“一个新列表”,而不是
数组。数组
,但这不会有太大的不同)。在浮点世界中没有“四舍五入的数字”——您可以使用
四舍五入(x,2)
,但这仍然会给您一个浮点,因此它不一定有“正好两位数”。无论如何,对于字符串列表:

newlistofstrings = ['%.2f' % x for x in L1]
或者对于具有十进制数的数字(如果需要,可以正好有两位数字):


为什么不直接在
L1
列表中循环,而不是执行while循环

for i in L1:
   print "%.2f" % i
保持简单:)

2个问题:

  • 循环永不结束(L1时)
  • 开始索引时使用1(初始化时计数=1)
  • 更好的是,正如其他人所说:

    for i in L1:
        print "%.2f" % i
    
    如果您还需要索引(计数):


    另请参阅一些更好的使用python的方法。

    谢谢,但它稍微复杂一些,因为我想创建一个包含四舍五入数字的新数组,我有点不知道如何在没有计数器的情况下执行此操作,这通常是我执行此操作的方式,而您的条件应该检查L1[计数],而不仅仅是L1。L1的真值永远不会改变。
    L2=["%.2f" %i for i in L1]
    
    for i in L1:
        print "%.2f" % i
    
    for (index, item) in enumerate(L1):
        print "Element number (0-based) %d is %f" % (index, item)