列表索引超出范围错误,但值是否存在?

时间:2014-01-30 00:10:46

标签: python

我正在尝试打印存储在'col_1'中的第5个值。当我打印第5个值或使用它时,它给了我这个错误:

Traceback (most recent call last):
File "/home/pi/test_files/test_two.py", line 99, in <module>
print(col_1[5])
IndexError: list index out of range

然而,如果我尝试1,4值,它完全没问题?我有代码将条目放入这些列表中:

def do_query():
    connection = sqlite3.connect('test_db.db')
    cursor = connection.cursor()
    cursor.execute("SELECT PRODUCT,BIN,SIZE,COLOR FROM TESTER_6 ORDER BY CheckNum")
    records = cursor.fetchall()
    print(records)

    for(Product,Bin,Size,Color) in records:
        col_1.append(Product)
        col_2.append(Bin)
        col_4.append(Size)
        col_3.append(Color)

    connection.commit()
    cursor.close()
    connection.close()

当我打印'记录'时,有第5个条目。不知何故,它在for循环期间没有进入列表。

为什么我遇到这个问题?

2 个答案:

答案 0 :(得分:4)

与大多数语言一样,Python索引从0开始。

如果列表中有五个元素,则调用col_1[5]将会生成IndexError。相反,列表中的第五个元素是col_1[4]

col_1 = ['a', 'b', 'c', 'd', 'e']
index:    0    1    2    3    4

所以:

>>> col_1[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> col_1[4]
'e'
>>> col_1[0]
'a'

答案 1 :(得分:3)

与大多数语言一样,Python中的列表基于0。所以,即使有5个元素,也没有element[5]。如果以1开头,则缺少的元素实际上是索引0

>>> range(5)
[0, 1, 2, 3, 4]