2013-12-19 51 views
1

目前分配我的變量,我有這樣的:(Python)的元組/列表分配

rows = [[convert[random.randint(0,7)] for _ in range(5)] for _ in range(5)] 
printedrows = [("[X]","[X]","[X]","[X]","[X]"," <- V: {} TOTAL: {}".format(row.count(0), sum(row))) for row in rows] 

這將創建5列隨機值:

('[X]', '[X]', '[X]', '[X]', '[X]', ' <- V: 1 TOTAL: 9') 
('[X]', '[X]', '[X]', '[X]', '[X]', ' <- V: 2 TOTAL: 5') 
('[X]', '[X]', '[X]', '[X]', '[X]', ' <- V: 0 TOTAL: 6') 
('[X]', '[X]', '[X]', '[X]', '[X]', ' <- V: 1 TOTAL: 10') 
('[X]', '[X]', '[X]', '[X]', '[X]', ' <- V: 0 TOTAL: 8') 

我想重新分配「X 「s的數字,所以它看起來像這樣:

('[X]', '[2]', '[X]', '[X]', '[X]', ' <- V: 1 TOTAL: 9') 
('[1]', '[X]', '[3]', '[0]', '[1]', ' <- V: 2 TOTAL: 5') 
('[X]', '[X]', '[1]', '[X]', '[X]', ' <- V: 0 TOTAL: 6') 
('[1]', '[X]', '[X]', '[X]', '[2]', ' <- V: 1 TOTAL: 10') 
('[X]', '[3]', '[X]', '[2]', '[X]', ' <- V: 0 TOTAL: 8') 

但是,當我使用此:(僅示例 - 該位置是用戶確定的)

convert = {0:0,1:1,2:2,3:3,4:0,5:1,6:2,7:1} 

printedrows[y][x] = rows[y][x] 
TypeError: 'tuple' object does not support item assignment 

有沒有什麼我可以做的,以解決這個問題,以便我可以更改沒有錯誤的值?謝謝。

回答

5

要創建一個使用元組的列表:

printedrows = [("[X]","[X]","[X]","[X]","[X]"," <- V: {} TOTAL: {}".format(row.count(0), sum(row))) 
       for row in rows] 

您可以替代這些名單:

printedrows = [["[X]","[X]","[X]","[X]","[X]"," <- V: {} TOTAL: {}".format(row.count(0), sum(row))] 
       for row in rows] 

注意的方括號而不是在圓括號那裏。