2017-04-06 35 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