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

How to change n-th element in list of lists with python list comprehensions?

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

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

和函数change_text(text)

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

我试过这个:

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

但我只有短信 ['changed_text1', 'changed_text2']

你可以在列表理解中有一个列表

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

一种方法可能是

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

您可以直接对第二个元素本身进行编辑,而无需创建另一个新列表。

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