一定数量的循环(python)后出现索引错误

时间:2018-03-10 16:19:38

标签: python

我在文件列表中创建了一个列表,格式基本上是List = [[a,b,c] [d,e,f] [g,h,i] ..... ,我想总是访问每个列表的第二个元素(b,e,h ...),并且下面的代码可以工作到83,而列表的长度是255,在那些83个元素后,python告诉我索引超出范围,我也尝试用255替换len(list)只是为了看问题所在,但同样的情况发生。有谁知道问题是什么?

x = 0 while x < len(List): print(List[x][1]) x += 1

4 个答案:

答案 0 :(得分:0)

  • 以下代码可以解决您的问题

    x = 0
    while x < len(List):
        if len(List[x]) > 2:
            print(List[x][1])
        x += 1
    
  • 我认为List[x]内部没有元素,因此您会收到索引错误

答案 1 :(得分:0)

当存在已修复的已知no:of迭代时,始终使用for循环。当迭代未知时使用,比如no:of迭代是从程序中动态计算的(例如找到Armstrong no :)。

#check syntax for python if version 3 above, i use 2.7
    for i in List:         #taking each list out of List as i
        if len(i)>=2:      #to retrieve second element the list should have 
            print(i[1])    #atleast 2 elements

答案 2 :(得分:0)

问题是您正在访问不包含第二个元素的数组,因为数组的长度小于2.

除此之外,您可以通过省略x变量来简化代码。您可以使用普通for来遍历列表。

我建议使用以下几行代码:

List = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"], [], ["z"], ["y", "z"]]
for array in List:
    if(len(array) > 1):
        print(array[1])

如果您运行此代码,它将打印出子列表的第二个元素,如果它存在,例如:

b
e
h
z

答案 3 :(得分:-1)

我希望你的内部列表中只有一个只有一个元素。您还应该使用for循环:

for element in List:
    print(element[1])

如果你的一个内部列表太短,它可能是一个错误,而不是检查它的长度(if len(element) > 2),如果你使用异常处理,这就变得更加明确了:

for element in List:
    try:
        print(element[1])
    except IndexError as e:
        print(f'list has too few elements: {element}')