2011-12-31 96 views
1

我有列表的列表,我想從列表中的特定索引創建多個較小的列表。如果我有這個大矩陣,我可以創建一個由從矩陣中收集的整數組成的小列表嗎?Python從列表中的特定索引創建列表

代碼:

matrix = [ 
    [0, 0, 0, 5, 0, 0, 0, 0, 6], 
    [8, 0, 0, 0, 4, 7, 5, 0, 3], 
    [0, 5, 0, 0, 0, 3, 0, 0, 0], 
    [0, 7, 0, 8, 0, 0, 0, 0, 9], 
    [0, 0, 0, 0, 1, 0, 0, 0, 0], 
    [9, 0, 0, 0, 0, 4, 0, 2, 0], 
    [0, 0, 0, 9, 0, 0, 0, 1, 0], 
    [7, 0, 8, 3, 2, 0, 0, 0, 5], 
    [3, 0, 0, 0, 0, 8, 0, 0, 0], 
    ] 
list1 = ([index 1, row 1], [index 2, row 2]) 
list2 = ([index 3, row 6], [index 7, row 9]) 
etc. 

我怎麼會在Python正確地做到這一點。幫助我填寫括號中的實際內容。

謝謝!

+0

什麼是「list1」和「list2」由?他們是否應該是非零元素的列表?如果是這樣,什麼決定了分組? – jterrace 2011-12-31 17:53:20

+0

list1和list2應該由矩陣中的元素組成。 – chingchong 2011-12-31 18:35:18

回答

4

如果index1表示FIRST索引,則row1表示FIRST行, 則在這種情況下矩陣[0] [0] = 0。 矩陣[1] [0] = 8 矩陣[1] [5] = 7

在所有,可以執行矩陣[ROW_INDEX] [COL_INDEX]

所以list1的= [矩陣[0,0 ],矩陣[2] [2]]

希望這會有所幫助。

4
list1 = [matrix[1][1], matrix[2][2]] 
list2 = [matrix[6][3], matrix[9][7]] 

等等

2

你基本上有一個列表的列表在這裏。你通過調用列表中的項目:

listname[index] 

SO ....

matrix[0]會給你[0, 0, 0, 5, 0, 0, 0, 0, 6]

matrix[0][0]會給你0 ....也就是說,第零個元素的零列表。

請記住,任何列表中的「第一個」元素實際上都是第零個元素。所以矩陣[1]會給你列表中的「第二」事物。

list1 = [matrix[1][1], matrix[2][2]] 
list2 = [matrix[6][3], matrix[9][7]] 

另外一張紙條,以幫助您提出更好的問題......你給的例子呼籲名單,但你的例子是由表示括號內的元組分組的項目。列表用方括號表示。 []

+0

括號的要點是表明我需要修復哪一部分而不是說它是一個元組。 – chingchong 2011-12-31 18:45:38

0

是這樣的:

newmatrix = [] 
for n,i in enumerate(matrix[0]):# assuming the lists are in the same length 

    templist =[] 
    for l in matrix: 

     templist.append(l[n]) 
    print "templist: ",n,"content: ",templist 
    newmatrix.append(templist) 

編輯:剛剛意識到,我完全地誤解了問題。不相關的答案,對不起。不刪除,因爲也許這可能與其他人有關