如何使用python列表推导更改列表列表中的第n个元素?

时间:2015-04-26 07:11:13

标签: python list list-comprehension

我有一个这样的子列表列表:

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

和功能change_text(text)

如何才能将此功能仅应用于每个子列表的文本元素?

我试过这个:

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

但我只收到了文字['changed_text1', 'changed_text2']

3 个答案:

答案 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]]

答案 1 :(得分:0)

一种方法可能是

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

答案 2 :(得分: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]]