我似乎无法弄清楚问题出在哪里。我正在使用此代码从数组创建多组数字。我不确定这是否是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'
答案 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))
或在python-2.7中,您可以使用可迭代拆包:
for k, g in groupby(enumerate(data), lambda (i, x): i - x):
print(map(itemgetter(1), g))
因此,我们在两个参数i
和x
中将元组解包。