python - 使用接受两个参数的 lambda 函数映射
问题描述
我想从列表列表中的所有子列表中获取第 i 个元素。我尝试使用 map 和 lambda 函数,如下所示
extract = lambda x,i :x[i]
a = [[1,2,3],[4,5,6],[6,7,8]]
b = list(map(extract(i = 1),a))
我希望 b 是 [2,5,7] 但我知道最后一行不起作用。我应该如何使用 map 和 lambda 来解决这个问题
解决方案
您可以硬编码1
:
extract = lambda x: x[1]
a = [[1,2,3],[4,5,6],[6,7,8]]
b = list(map(extract,a))
print(b)
# [2, 5, 7]
您通常不想将 a 存储lambda
到变量中,这更好:
def extract(x):
return x[1]
b = list(map(extract, a))
或者简单地说:
b = list(map(lambda x: x[1], a))
您还可以使用列表推导,我个人认为这是最好的选择:
c = [x[1] for x in a]
print(b == c)
True
推荐阅读
- shell - awk:将一个字段拆分为一列中的多行
- java - 我可以在 JTabbedPane 选项卡中使用不同大小的 JPanel 吗?
- python-3.x - 如何将 numpy.ndarray 列表(每个 numpy.ndarray 是一个 1*3 向量)重塑为 2-D Matrix ,以表示为图像?
- process - 操作系统中进程运行状态和执行状态的区别
- hive - Athena 的 .csv.metadata 文件的数据格式是什么?
- stm32 - 在 stm32H7 上运行 YOLOv3-tiny 怎么样?
- ruby - RubyMine 在尝试创建 SDK 时出现通信错误
- javascript - 如何通过 SocketIO 使用 CommonJS 导出和导入?
- c# - 如何从动态代码中使用的特定节点访问子节点?
- laravel - 不显示搜索结果