2016-12-02 80 views
-3

我有这样的元组的列表:Python的修改列表内的元组

myList=[(u"hell world", 10),(u"hello mom", 20), (u"hello dad","5")] 

我需要修改每个元组,以得到类似下面的列表:

mySecondList= [(u"hell",u"world","10"),(u"hello",u"mom","20"), (u"hello",u"dad","5")] 

哪有我这么做?

+6

元组是不可变的,所以您需要返回带有新元组的列表。 – Tobias

+1

发布您的尝试.. –

+0

尝试使用字符串'.split'方法。如果您遇到问题,请发布您的代码并准确解释它做错了什么。 –

回答

0

元组是一种不可变的类型,因此一旦创建它们就无法更改内容。也许你应该尝试列表,这是可变的。

+0

谢谢Tobias!感谢Moinuddin Quadri!两个答案都很好! – CosimoCD

1

正如我在我的评论的元组写的是不可改变的,但你可以使用类似下面的代码:

def modify(lst): 
    ret = [] 
    for tpl in lst: 
     ret.append(tuple([tpl[0].split(' '), tpl[1]])) 
    return ret 

或者你可以使用一台发电机,并把它传递给tuple构造:

new_list = tuple(item[0].split(' ') + [item[1]]) for item in myData) 
4

您可以使用实现列表理解表达所需的行为:

[tuple(item[0].split() + [str(item[1])]) for item in myList] 

将返回:

[(u'hell', u'world', '10'), (u'hello', u'mom', '20'), (u'hello', u'dad', '5')] 

tuple在本质不变。您不能修改现有的元组对象。在这里,我使用新创建的元组对象返回新列表

+0

@AvinashRaj他使用Python 2 ;-)编辑:啊没关系,第三个组件是一个普通的字节串。 – Tobias