2014-04-18 3 views
1

Мой список выглядит так:Update 2D Список с кортежем в Python

[('void ', 'treeInit', 'tSymbolTree *T'),('tTreeItemPtr ', 'nodeInsert', 'tTreeItemPtr *T')] 

и если я называю:

>>>list[0][0] 
void 

и теперь это проблема, которую я с помощью re.sub, которая возвращает strign. и если я называю

>>>list[0][0] = re.sub('(\s+$),'',newItem) 
TypeError: 'tuple' object does not support item assignment 

Может кто-нибудь мне помочь? Спасибо

ответ

2

tuples являются неизменяемыми объектами, вы не можете присваивать им значения. Вы должны преобразовать список кортежей в список списков. Он хотел бы следующим образом:

[['void ', 'treeInit', 'tSymbolTree *T'], ['tTreeItemPtr ', 'nodeInsert', 'tTreeItemPtr *T]] 

Чтобы преобразовать список кортежей в список строк, вы можете сделать:

>>> a = [('void ', 'treeInit', 'tSymbolTree *T'),('tTreeItemPtr ', 'nodeInsert', 'tTreeItemPtr *T')] 
>>> b = [list(i) for i in a] #or map(list, a) 
>>> print b 
[['void ', 'treeInit', 'tSymbolTree *T'], ['tTreeItemPtr ', 'nodeInsert', 'tTreeItemPtr *T]] 
+1

+1. В качестве альтернативы вы также можете сделать «map (list, a)». –

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