2015-04-26 144 views
-1

我有一個這樣子列表清單:如何使用python list comprehensions更改列表列表中的第n個元素?

posts = [[1, 'text1', 0], [1, 'text2', 0]] 

和功能change_text(text)

我怎樣才能申請此功能只對文本的每個子列表的元素呢?

我已經試過這樣:

posts = [change_text(post[1]) for post in posts] 

,但我只拿到案文['changed_text1', 'changed_text2']

+0

該函數的外觀如何?你的預期產出是多少? –

+0

這個例子很簡單,但假設它將'text'改爲'changed text',我期望得到的是[[1,'changed_text1',0],[1,'changed_text2',0],而不是文本字段只要。 –

回答

2

您可以在列表中理解中的列表

>>> change_text = lambda x:'changed_'+x 
>>> posts = [[1, 'text1', 0], [1, 'text2', 0]] 
>>> [[post[0],change_text(post[1]),post[2]] for post in posts] 
[[1, 'changed_text1', 0], [1, 'changed_text2', 0]] 
+0

謝謝,這很簡單,至少看過一次。 –

+0

是的,我正在等待您的評論發佈答案 –

0

的一種方法是

[[post[0], change_text(post[1]), post[2]] for post in posts] 
0

您可以直接在第二個元素上進行編輯,而無需創建另一個新列表。

>>> change_text = lambda x:'changed_'+x 
>>> posts = [[1, 'text1', 0], [1, 'text2', 0]] 
>>> for m in posts: 
     m[1] = change_text(m[1]) 


>>> posts 
[[1, 'changed_text1', 0], [1, 'changed_text2', 0]] 
相關問題