TypeError:<lambda>()缺少1个必需的位置参数:'item'

时间:2019-06-28 21:43:35

标签: python lambda

我似乎无法弄清楚问题出在哪里。我正在使用此代码从数组创建多组数字。我不确定这是否是python兼容性问题。


data=[]
data=1,2,3,4,6,7,8,11,12
for k, g in groupby(enumerate(data), lambda i, x: i-x):
    print map(itemgetter(1), g)

<TypeError: <lambda>() missing 1 required positional argument: 'x'

2 个答案:

答案 0 :(得分:2)

假设这是Python 2.x-您只是在lambda的参数周围缺少了一对括号:

for k, g in groupby(enumerate(data), lambda (i, x): i-x):
    print map(itemgetter(1), g)

答案 1 :(得分:2)

您在此处使用lambda i, x : i - x定义了一个带有两个参数的函数,但是groupby函数仅带有一个参数。在这种情况下为2元组。

因此,您可以使用下标 来获取元素:

for k, g in groupby(enumerate(data), lambda x: x[0]-x[1]):
    print(map(itemgetter(1), g))

或在中,您可以使用可迭代拆包

for k, g in groupby(enumerate(data), lambda (i, x): i - x):
    print(map(itemgetter(1), g))

因此,我们在两个参数ix中将元组解包。