Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2015 10:04:32

dobriy_dada
Зарегистрирован: 2015-09-04
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка с lambda

Здравствуйте, помогите пожалуйста разобраться, почему не работает код?

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

Отредактировано dobriy_dada (Ноя. 28, 2015 10:04:46)

Офлайн

#2 Ноя. 28, 2015 10:12:24

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

сортировка с lambda

dobriy_dada
SyntaxError: invalid syntax
У меня работает. Соберите код в одну строчку, наверное табуляция.
Настройте редактор чтобы везде были пробелы.



Офлайн

#3 Ноя. 28, 2015 10:35:18

dobriy_dada
Зарегистрирован: 2015-09-04
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка с lambda

Через консоль ввёл

>>> 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 (Ноя. 28, 2015 10:35:45)

Офлайн

#4 Ноя. 28, 2015 11:24:15

dobriy_dada
Зарегистрирован: 2015-09-04
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка с lambda

Сделал по-другому

from operator import itemgetter
sort_a=sorted(a,key=itemgetter(1),reverse=True)
Или так можно:
sort_a=sorted(a,key=lambda x: x[1],reverse=True)

Офлайн

#5 Ноя. 28, 2015 13:36:37

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

сортировка с lambda

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'



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Ноя. 28, 2015 14:29:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

сортировка с lambda

Во втором

>>> 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
в третьем, судя по всему, лямбда конструкция сделана иначе
Это не лямбда, а вообще все функции.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version