2016-12-02 81 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