2014-04-18 27 views
1

我的列表元组更新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)'。 –