我有一个包含内部列表的列表(从逗号分隔的文件中读取),我想获取其中的第二项。例如,在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])
这最终可以正常工作,现在我知道我也可以使用第二个版本,但是我想知道为什么当第二个版本可以正常工作时,第一个版本会给出该错误?
编辑:包括我的其余代码
答案 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)
之前先尝试确定其实际结构,然后从那里进行相应处理。