我在文件列表中创建了一个列表,格式基本上是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
答案 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}')