Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一定数量的循环之后出现索引错误(python)_Python - Fatal编程技术网

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

在一定数量的循环之后出现索引错误(python),python,Python,我已经从一个文件在一个列表中创建了一个列表,其格式基本上是list=[[a,b,c][d,e,f][g,h,I]..,我希望始终访问每个列表的第二个元素(b,e,h…),下面的代码一直工作到83,而列表的长度是255,在这83个元素python告诉我索引超出范围之后,我还尝试用255替换len(list),只是想看看问题出在哪里,但同样的情况也发生了。有人知道问题出在哪里吗 x=0 当x2) for element in List: try: print(element[

我已经从一个文件在一个列表中创建了一个列表,其格式基本上是list=[[a,b,c][d,e,f][g,h,I]..,我希望始终访问每个列表的第二个元素(b,e,h…),下面的代码一直工作到83,而列表的长度是255,在这83个元素python告诉我索引超出范围之后,我还尝试用255替换len(list),只是想看看问题出在哪里,但同样的情况也发生了。有人知道问题出在哪里吗

x=0
当xx+=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}')
  • 下面的代码应该可以解决您的问题

    x = 0
    while x < len(List):
        if len(List[x]) > 2:
            print(List[x][1])
        x += 1
    
    x=0
    当x2:
    打印(列表[x][1])
    x+=1
    
  • 我认为
    列表[x]
    中没有元素,因此会出现索引错误


当存在固定的已知迭代次数时,始终使用for循环。当迭代未知时使用while,例如从程序动态计算迭代次数(例如查找Armstrong no:)


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

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

我建议使用以下代码:

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

如果您打印
列表[84]
,您可能会发现它的元素少于两个。谢谢,这就是问题所在。。我只是没有想到,因为我创建的列表是从我们讲师提供的一个文件中创建的,所以我不认为问题会出在那里,但事实证明,文件在这一点上是错误的……如果其中一个内部列表只有一个项,这将产生与OP询问的结果相同的结果。这是我一直在寻找的词。谢谢我也很清楚地没有说明这是解决他的数据问题的方法。由于他对自己的数据有错误的假设,也许这个问题最好在别处解决。尽管如此,我还是要添加一些错误处理。我很确定,既然不是一个讨论论坛,那么答案应该能解决OP提出的问题。同时,有很多学习者不知道如何提出正确的问题,他们应该朝着正确的方向前进。但是这本身就变成了一个讨论,所以我就到此为止。如果len(List[x])>1:
,为什么不
?如果您使用数组中的
[“y”,“z”]
运行代码,“z”将被忽略。@gil.fernandes查看他试图打印的内容的问题。。。我假设他的数据结构是列表[[“a”,“b”],[“c”,“d”]。。。他试图打印索引1中的元素,每做一次这项工作,结果有什么改进吗?你能给出你的反馈吗?
b
e
h
z