首页 > 解决方案 > append 不适用于 lambda 和 map。如何在列表中添加新元素?

问题描述

我想在 Python 中制作一个带有 map 和 lambda 的列表。我有这个结构,但附加不起作用。

my_list = [[0, 1], [0, 1]]
my_list = list(map(lambda x: x.append(1), my_list))

我希望结果是这样的:

[[0, 1, 1], [0, 1, 1]]

我试过这个:

list(map(lambda x: [x[0], x[1], 1], my_list))

这是可行的(结果是[(0, 1, 1), (0, 1, 1)]),但我实际上想使用 append 之类的东西,因为它取决于列表的维度。

如果我有输入列表

my_list = [[0, 1], 0]

它不起作用。

标签: pythonpython-3.x

解决方案


使用 map 和 lambda 你可以:

my_list = [[0, 1], [0, 1]]
my_list = list(map(lambda x: x + [1], my_list))
print(my_list)

输出:

[[0, 1, 1], [0, 1, 1]]

理解也有效:

my_list = [[0, 1], [0, 1]]
my_list = [x + [1] for x in my_list]
print(my_list)

输出:

[[0, 1, 1], [0, 1, 1]]

编辑:您的第二个示例输入暗示了非列表元素的潜力。

这是处理这种情况的一种方法:

my_list = [[0, 1], 0]
my_list = [(x if isinstance(x, list) else [x]) + [1] for x in my_list]
print(my_list)

输出:

[[0, 1, 1], [0, 1]]

推荐阅读