2017-04-06 34 views
0

我在一个文件中有一些数据,我已经在(int)中进行了转换并将其附加到列表中。切片列表没有正确输出。 Python 3

minValue = open ("Mineral Values.csv", 'r') 
refineList = [] 

for line in minValue: 
    tritanium, pyerite, mexallon, isogen, nocxium, megacyte, zydrine, morphite = line.split(',') 
    trit = int(tritanium) 
    pye = int(pyerite) 
    mexa = int(mexallon) 
    iso = int(isogen) 
    nocx = int(nocxium) 
    mega = int(megacyte) 
    zyd = int(zydrine) 
    morp = int(morphite) 
    refineList.append ([trit, pye, mexa, iso, nocx, mega, zyd, morp]) 
    minValue.close() 

如果我打印出来它会打印出文件中的所有数据。 [[415,0,0,0,0,0,0,0],[436,0,0,0,0,0,0,0],[457,0,0,0,0,0 ,0,0],[346,173,0,0,0,0,0,0]等等

但我想将这些列表的一部分,所以我可以将它们分配给变量做一些数学。我使用的代码如下

refineList[0:3] 
print (refineList) 

这应该只是打印出第一个列表中的415我认为?但是它没有任何作用,只是再次打印出整个列表。我环视四周,并说所有使用切片方法应该工作,所以我错过了什么?

在此先感谢

+1

使用'图(INT,line.split( ''))'来拯救自己所有的个人电话为int。 –

+0

你应该使用'refineList = refineList [0:3]'。只是说'refineList'不会改变任何东西。 – zondo

+0

并回答你的问题,没有。有几个问题似乎让你感到困惑。使用切片*会创建一个新列表*并且不会修改原始图片。如果您没有将切片分配给任何内容,它只会被垃圾收集。其次,'refineList'是其他列表的列表......切片'[:3]'将返回一个新列表,其中包含'refineList'中的前三个子列表。如果您想要第一个子列表的第一个元素,请使用'x = refineList [0] [0]' –

回答

2
a = [[415, 0, 0, 0, 0, 0, 0, 0], [436, 0, 0, 0, 0, 0, 0, 0], [457, 0, 0, 0, 0, 0, 0, 0], [346, 173, 0, 0, 0, 0, 0, 0]] 

print a[0] # print first list in my list of lists 
print a[0][0] # print first element in first list in my list of lists 

>>> 
[415, 0, 0, 0, 0, 0, 0, 0] 
415