2013-12-19 4 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] 

Примечания квадратных скобок, в отличие от круглой скобки там.

Смежные вопросы