Python3 print,IndexError:列表索引超出范围

时间:2017-07-04 13:40:19

标签: python

我的代码

for i in l:
    print (("ALTER TABLE jul ADD COLUMN %i VARCHAR(256);") %(l[i]))

我的清单

l=[1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]

What I got in Jupyter
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-11-6f78605f79c5> in <module>()
      1 for i in l:
----> 2     print (("ALTER TABLE jul ADD COLUMN %i VARCHAR(256);") %(l[i]))

IndexError: list index out of range

3 个答案:

答案 0 :(得分:4)

当你这样做时:

for i in l

i已经是您的元素,而不是您的索引。 (另外,字符串周围或i周围不需要括号。)

所以简单地做

for i in l:
    print ("ALTER TABLE jul ADD COLUMN %i VARCHAR(256);" % i)

答案 1 :(得分:1)

使用

for i in l

i将获取l内的值,而不是其索引。 (即i = 1995,然后i = 1996 ...)显然列表l没有那么多元素

你想要的是:

for i, li in enumerate(l):
    print(i,li)
#(0, 1995)
#(1, 1996)
#(2, 1997)
#...

答案 2 :(得分:0)

当你做

for i in l:
    print (("ALTER TABLE jul ADD COLUMN %i VARCHAR(256);") %(l[i]))

i表示列表中的每个元素。所以第一个元素是1995年,你试图做一个[1995],这显然是出局或界限。

使用

for i in range(len(l)):

for i, element in enumerate(l):

或直接访问元素i:

for i in l:
    print(i)