Найти - Пользователи
Полная версия: сортировка с lambda
Начало » Python для новичков » сортировка с lambda
1
dobriy_dada
Здравствуйте, помогите пожалуйста разобраться, почему не работает код?
a=[(0,1),(0,2), (2,3)]
sorted(a,
       key=lambda (user_id, num_friends): num_friends,
       reverse=True)

Пишет, что:
  File "<input>", line 2
    key=lambda (user_id, num_friends): num_friends,
               ^
SyntaxError: invalid syntax
doza_and
dobriy_dada
SyntaxError: invalid syntax
У меня работает. Соберите код в одну строчку, наверное табуляция.
Настройте редактор чтобы везде были пробелы.
dobriy_dada
Через консоль ввёл
>>> a
[(0, 1), (0, 2), (2, 3)]
>>> sorted(a,key=lambda(user_id, num_friends):num_friends,reverse=True)
File "<input>", line 1
sorted(a,key=lambda(user_id, num_friends):num_friends,reverse=True)
^
SyntaxError: invalid syntax

Всё равно ошибка
dobriy_dada
Сделал по-другому
from operator import itemgetter
sort_a=sorted(a,key=itemgetter(1),reverse=True)
Или так можно:
sort_a=sorted(a,key=lambda x: x[1],reverse=True)
JOHN_16
doza_and
это на втором питоне работает, в третьем, судя по всему, лямбда конструкция сделана иначе.
>>> l = lambda x,y: y
>>> l(x=1,y=2)
2
>>> l(1,2)
2
>>> l((1,2))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 1 required positional argument: 'y'
py.user.next
Во втором
>>> t = lambda (x, y): (x * 2, y * 2)
>>> t((1, 2))
(2, 4)
>>>

В третьем
>>> t = lambda (x, y): (x * 2, y * 2)
  File "<stdin>", line 1
    t = lambda (x, y): (x * 2, y * 2)
               ^
SyntaxError: invalid syntax
>>>

JOHN_16
в третьем, судя по всему, лямбда конструкция сделана иначе
Это не лямбда, а вообще все функции.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB