Python从每个内部列表中获得第二项

时间:2019-03-05 21:22:00

标签: python python-3.x list for-loop jupyter-notebook

我有一个包含内部列表的列表(从逗号分隔的文件中读取),我想获取其中的第二项。例如,在x = [[2,3,4][5,6,7]]中,我想得到3和6。简单的东西,我以为我知道该怎么做。我知道我可以尝试使用以下方法来获取第二个数字:

fp = open('random.txt') 
x = list(fp.read().split("\n"))
x.pop(0) #header line
x = [item.split(",") for item in x]

print([item[1] for item in x])

我的问题是,我可以通过在上面的代码中进行item[0]来获得第一项,并且效果很好。但是,如果我尝试item[1],则会得到列表索引超出范围错误。我尝试只是在正常的for循环中测试列表是否正确。

for item in x:
    print(item[1])

这最终可以正常工作,现在我知道我也可以使用第二个版本,但是我想知道为什么当第二个版本可以正常工作时,第一个版本会给出该错误?


编辑:包括我的其余代码

1 个答案:

答案 0 :(得分:0)

我认为问题一定与您的其他代码有关。我只运行了以下内容:

x = [[2, 3, 4], [5, 6, 7]]
print([item[1] for item in x])
  

[3,6]

for item in x:
    print(item)
  

[2,3,4]

     

[5,6,7]

for item in x:
    print(item[1])
  

3

     

6

您发布的所有代码运行正常,没有错误。您必须以某种方式更改未发布的列表。建议您在处理print(x)之前先尝试确定其实际结构,然后从那里进行相应处理。