Ошибка типа: <lambda>() отсутствует 1 обязательный позиционный аргумент: 'элемент' - PullRequest
2 голосов
/ 29 июня 2019

Кажется, я не могу понять, в чем здесь проблема. Я использую этот код для создания нескольких групп чисел из массива. Я не уверен, является ли это проблемой совместимости с 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 ]

2 голосов
/ 29 июня 2019

Здесь вы определили с lambda i, x : i - x функцию, которая принимает два параметра, но функция groupby принимает только один параметр.В этом случае 2-кортеж.

Таким образом, вы можете получить элементы с подпиской :

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

или ,Вы можете использовать повторяемую распаковку :

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

здесь мы таким образом распаковываем кортеж с двумя параметрами i и x.

2 голосов
/ 29 июня 2019

Предполагается, что это Python 2.x - вам просто не хватает пары скобок вокруг параметров lambda:

for k, g in groupby(enumerate(data), lambda (i, x): i-x):
    print map(itemgetter(1), g)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...