LINUX.ORG.RU

Простейший строки кода не выполняются в терминале

 , ,


0

1

Прошу объяснить, в чем проблема. Что не так то? Элементы кортежа не могут так подставляться в ламбду? Это некорректное написание??

>>> k=map(lambda a,b: b-a, [(0, 1), (8, 21), (9, 21), (10, 21)])
>>> list(k)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 1 required positional argument: 'b' 

Согласно документации

map(function, iterable, ...) Return an iterator that applies function to every item of iterable, yielding the results.

у меня это соответствует



Последнее исправление: hibiscusM (всего исправлений: 1)

Ты в лямбду передаешь один аргумент - кортеж из чисел. А у тебя лямбда объявлена как функция двух аргументов.

lambda pair: pair[1] - pair[0]

Aswed ★★★★★
()
Последнее исправление: Aswed (всего исправлений: 2)
Ответ на: комментарий от Crocodoom

да, лучше, спасибо. А меня куда-то в дебри занесло.

hibiscusM
() автор топика
Ответ на: комментарий от makoven

я придерживаюсь мнения, что в питоне нужно стараться писать код который работает как во втором так и в третьем

Aswed ★★★★★
()
Ответ на: комментарий от makoven

А во втором питоне можно было деструктурировать кортежи прямо в декларации аргументов функции

напиши такое решение на втором плз

MyTrooName ★★★★★
()
Ответ на: комментарий от Aswed

Это плохо. Надо писать в той версии, в которой целевая система. Так лучше, чем отлавливать баги в двух версиях.

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.