python-3.x - 如何使用 map 和 lambda 函数连续减去两个元素(float 类型)
问题描述
我有这种好奇心,我想杀死但我不知道怎么做。我试图使用 map 和 lambda 函数减去类型为 float 的列表中的一行中的两个元素。
li = [12.12,14.11,43.32]
我正在这样做,但似乎类型 float 不可下标。
x = map(lambda y: y[1] - y[0], li)
解决方案
你不能不做预处理(不只是为了使用它li
而直接滥用)。旨在一次对单个元素进行操作。要使用它,您需要确保该单个元素具有生成新元素所需的所有数据。map
map
使用自身的移位版本压缩列表可以实现此目的:
li = [12.12,14.11,43.32]
shifted = iter(li)
next(shifted) # Drop the first element
neighbors = zip(li, shifted)
map(lambda pair: pair[0] - pair[1], neighbors)
虽然,lambda
这里没有必要:
from operator import sub
from itertools import starmap
li = [12.12,14.11,43.32]
shifted = iter(li)
next(shifted)
neighbors = zip(li, shifted)
starmap(sub, neighbors)
starmap
sub
让这个更干净
推荐阅读
- c++ - 如何在 C++ 中初始化卷积层而不是原始文本?
- c++ - 如何让月份停止显示 1.00、2.00 等
- r - 通过在数据框中重复值来创建向量
- android - 发布时获取地理位置时应用程序强制关闭
- camera - 如何从 ros bag 中提取相机信息和图像?
- c# - ASP.Net MVC-在请求后生成新的 HttpContext.Session.SessionID
- c# - 如何使用 datepart 和 datediff 修复查询中的无效过程
- python - 有没有办法在使用 Group.visititems 时获取数据集或组的父级?
- python - 我想将一个元素附加到 xml 的前导
- angular - 尝试使用自定义 Angular 组件库时出现注入器错误