首页 > 解决方案 > 如何使用 map 和 lambda 函数连续减去两个元素(float 类型)

问题描述

我有这种好奇心,我想杀死但我不知道怎么做。我试图使用 map 和 lambda 函数减去类型为 float 的列表中的一行中的两个元素。

li = [12.12,14.11,43.32]

我正在这样做,但似乎类型 float 不可下标。

x = map(lambda y: y[1] - y[0], li)

标签: python-3.x

解决方案


你不能不做预处理(不只是为了使用它li而直接滥用)。旨在一次对单个元素进行操作。要使用它,您需要确保该单个元素具有生成新元素所需的所有数据。mapmap

使用自身的移位版本压缩列表可以实现此目的:

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)

starmapsub让这个更干净


推荐阅读