初学者编码器:Python列表索引超出范围

时间:2018-02-09 19:57:09

标签: python python-2.7 list split

我是编码的新手,我从表格的列中提取了数据,如下所示

print(column3)

x; y
x; y
x 
x; y; z
x 
x; y

然后我将字符串拆分为&#39 ;; '

column_elements = column3.split('; ')
print(column_elements)

['x', 'y']
['x', 'y']
['x'] 
['x', 'y', 'z']
['x'] 
['x', 'y']

所以当我尝试使用

打印时
y = (column_elements[1]) 

由于并非所有列表的长度都超过[0],因此出现错误。我不是 确定如何从不同列表长度的数据集中获取每个元素。

1 个答案:

答案 0 :(得分:3)

不要使用直接索引,对列表的元素使用for

l = [[0],[1,2,3],[5,2]]

for elem in l:
    for num in elem:
        print(num)

或(不太好,不需要,从不这样做)使用len来获取内部列表的长度(从0开始到len(l)-1是索引):

for idx in range(len(l)):            # len(l) == 3, range(len(l)) == [0,1,2]  
    for idx2 in range(len(l[idx])):     # len of the sublist
        print(l[idx][idx2])

输出(两者):

0
1
2
3
5
2

如果您真的需要索引值,请使用enumeration并分解索引和值:

for idx, val in enumerate(l):   # yields you (0,[0]), (1,[1,2,3]), (2,[5,2])
    print(f"Index: {idx} with {val}")

输出:

Index: 0 with [0]
Index: 1 with [1, 2, 3]
Index: 2 with [5, 2]