在一定数量的循环之后出现索引错误(python)
我已经从一个文件在一个列表中创建了一个列表,其格式基本上是list=[[a,b,c][d,e,f][g,h,I]..,我希望始终访问每个列表的第二个元素(b,e,h…),下面的代码一直工作到83,而列表的长度是255,在这83个元素python告诉我索引超出范围之后,我还尝试用255替换len(list),只是想看看问题出在哪里,但同样的情况也发生了。有人知道问题出在哪里吗在一定数量的循环之后出现索引错误(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[
x=0
当x x+=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 当x
2: 打印(列表[x][1]) x+=1 - 我认为
中没有元素,因此会出现索引错误列表[x]
问题是您正在访问不包含第二个元素的数组,因为数组的长度小于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