python - 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]
它不起作用。
解决方案
使用 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]]
推荐阅读
- matrix - 找出循环的 CSR x CSR 矩阵乘法
- python-3.x - pyModbusTCP 每秒失败一次功能
- swift - SwiftUI onTapGesture interact with caller only
- angular - 在浏览器中打开 devtools 之前,传单地图未完全渲染 - 角度版本 10 中面临的问题
- python - 来自 gs 云客户端 MaxRetryError 或 WRONG_VERSION_NUMBER 的 python ssl 错误
- javascript - 导出我自己的 Array 原型方法并将其用于不同的文件
- c# - 当收件箱为空时,C# mailkit 显示错误
- python - 用漂亮的汤刮奇怪的桌子结构
- java - Android 无法创建 APK 文件
- php - 最新的 Cookie Laravel 上的“反序列化():61 字节偏移量 0 处出错”