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

How to divide two elements in a list of objects?

我有一个对象列表(列表的列表),其中包含一个字符串和两个浮点值。我必须使用 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 将获取一个包含三个元素的列表,计算最后两个元素之间的除法并将结果附加到列表的末尾,然后再返回它。

我的解决方案使用 pandas Python 模块。

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 列。