我有一个这样的子列表列表:
posts = [[1, 'text1', 0], [1, 'text2', 0]]
和功能change_text(text)
如何才能将此功能仅应用于每个子列表的文本元素?
我试过这个:
posts = [change_text(post[1]) for post in posts]
但我只收到了文字['changed_text1', '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]]
答案 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]]