在另一个线程(Python splitting list based on missing numbers in a sequence)中,我找到了以下解决方案:
data = [1, 4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]
for k, g in groupby(enumerate(data), lambda (i,x):i-x):
print map(itemgetter(1), g)
我是Python新手,并尝试将其改编为Python 3.4:
for k, g in groupby(enumerate(data), lambda i,x :i-x):
print('%s' % list(map(itemgetter(1), g)))
我得到这个错误:
<lambda>() missing 1 required positional argument: 'x'
我(有限的)理解是groupby语句中的键函数仍然链接到需要两个参数的lambda函数。是这样吗?更重要的是,有没有办法修改上述代码?这是一个非常优雅和紧凑的解决方案
我的回答有点晚了,但我希望它对未来会有帮助。 是的,你说得对。Python 2的翻译问题>;Python3的事实是Python3中的lambda不接受元组作为参数。 但是,有一个解决方案,它是通过将预期的序列参数绑定到单个参数,然后对该参数进行索引来实现的:
将成为:
因此,在Python 3中工作的代码是:
这将输出:
请在此处查看有关具有元组的lambda的更多信息: python3-equivalent-for-auto-tuple-unpacking-in-lambda
相关问题 更多 >
编程相关推荐