如何在对象列表中划分两个元素



我有一个对象列表(列表列表(,其中包含一个字符串和两个浮点值。我必须使用lambda函数来划分这两个浮点值。这是我的样本数据:

listOfObjects = [['I', 5, 9], ['Y', 7, 13],['O', 3, 32]]

我的输出应该是相同的对象列表,还有一列的值分别为9/5、13/7和32/3

listOfObjects = [['I', 5, 9, 1.8], ['Y', 7, 13, 1.85],['O', 3, 32, 10.66]]

以下是我尝试过的:

avgValueList = list(map(lambda x, y: y[2]/x[1],listOfObjects))

但这给了我一个错误:TypeError: <lambda>() missing 1 required positional argument: 'y'

avgValueList = list(map(lambda x: x.append(x[2]/x[1]), listOfObjects))

listOfObjects的每个元素都是一个包含一个字符串和两个浮点值的列表。在listOfObjects上进行映射时,这些列表中的每一个都将成为lambda的参数x。这意味着x[0]是字符串,x[1]是第一个浮点,x[2]是最后一个浮点。所以lambda x: x[2]/x[1]取3个元素的列表,并将最后一个元素除以中间的元素。lambda不需要额外的参数。由于您想要追加到现有列表中,我们应该将x.append添加到lambda中,如下所示:lambda x: x.append(x[2]/x[1])。现在lambda将获取一个由三个元素组成的列表,计算最后两个元素之间的除法,并在返回之前将结果附加到列表的末尾

我的解决方案使用pandasPython模块。

import pandas as pd
lst = [
['I', 5, 9],
['Y', 7, 13],
['O', 3, 32],
]
df = pd.DataFrame(lst)
df['result'] = list(map(lambda x: x[2]/x[1], lst))
print(df)

您可以通过键入"df.result"或df['result']来访问result列。

最新更新