2012-02-15 38 views
-3

列清單列表裏面所以,我有兩個列表:使用python

shape = [1,2,4] 
board = [0,0,1,0,0,0,1,1,1] 

我想用一個for循環分配板指數的形狀指數,這樣我可以把任何形狀大小。我想要形狀的輸出是[0,0,1]

我曾嘗試做:

list1 = [] 
for x in shape: 
     list1.append(board[x]) 

但它給我的輸出爲[0,1,0]

我想要的輸出爲[0,0,1],所述板的前三個索引。

+1

如果你想要板的前3個元素,爲什麼'shape = [0,1,2]'? – 2012-02-15 01:16:53

回答

-1

列表索引是基於0的,索引[1,2,4]中的棋盤項目實際上是[0,1,0]。 如果你想使用基於1的索引,你需要對它們進行調整:

list1 = [board[i-1] for i in shape] 
+0

>>> shape = [1,2,4] >>> board = [0,0,1,0,0,0,1,1,1] >>> list1 = [board [i-1 ]對於i的形狀] >>> list1的 [0,0,0] – user1210298 2012-02-15 01:12:39

+0

此代碼不會產生'[0,0,1]',其中OP是尋找。相反,它會產生'[0,0,0]'。 – 2012-02-15 01:12:52

+0

[0,0,0]是指定索引的值,那不是我的錯。不管你有什麼數據,你希望輸出是[0,0,1]?! – yurib 2012-02-15 01:15:33

1

那麼你的意思是,在shape的數字有什麼區別?無論shape中的號碼如何,您只需要board中的第一個len(shape)項?

在這種情況下:

board[0:len(shape)] 
+0

非常感謝! :) – user1210298 2012-02-15 01:15:33

3

您正在用

list1 = [] 
for x in shape: 
    list1.append(board[x]) 

該代碼手段,使list1等於[board[1], board[2], board[4]],因爲你開始與空列表,然後追加board[x]每個xshape(並且自Python的列表索引從0開始)。你可能想是這樣

list1 = [] 
for i in xrange(len(shape)): 
    list1.append(board[i]) 

現在i範圍爲0〜2,根據需要。

+0

你錯寫了'board [1]',我把1改爲i。 – yurib 2012-02-15 01:11:50

+0

@yurib感謝您解決我的錯誤。 – 2012-02-15 01:13:20