Форум сайта python.su
здравствуйте
сейчас есть такой код:
lst = list("qwertyuiopasdfghjklzxcvbnm")
random.shuffle(lst)
str = "".join(lst))[0:10]
lambda str: random.shuffle(str); return str;
function(){ some code; return result; }();
Офлайн
ну return о моему убрать можно
Офлайн
Прочитайте пару страниц про лямбда-исчисление, сразу станет всё ясно с лямбдами в питоне.
Офлайн
>>> random.sample('qwertyuiopasdfghjklzxcvbnm',10)
['s', 'y', 'c', 'f', 'j', 'n', 'p', 'm', 'r', 'h']
Офлайн
спасибо за наводку на sample, то что надо
но где увидеть разные примеры вызова лямбды?
читаю
http://ru.wikibooks.org/wiki/Учебник_Python_3.1#.D0.9C.D0.BD.D0.BE.D0.B6.D0.B5.D1.81.D1.82.D0.B2.D0.B0
и всё равно непонятно
самое главное что я не пойму - она является аналогом безымянной функции яваскрипта? если да, то как её саму же вызвать сразу после определения?
где задается значение параметра, который она получает?
tmp = lambda test: test+2
я так понимаю - это должно прибавлять к заданному числу 2
tmp(2) #4
а как её вызвать в одну строку и как сделать многострочной?
lambda test: test, test+2 # неправильно
lambda test: test+2(2) # и так тоже нельзя
Офлайн
в питоне lambda по определению однострочная функция
остальные ваши вопросы ввели меня в ступор :)
mylamb = lambda x1,x2,x3 : x1 or x2 or x3
print mylamb(None, 100500, 'vv')
Отредактировано (Окт. 10, 2010 21:21:55)
Офлайн
лямбда создает функцию. вызвать её в той же строке самостоятельно нельзя, но в контексте какого-нибудь filter можно например так :
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> filter( lambda x: x%2, a )
[1, 3, 5, 7, 9]
Офлайн
вызвать её в той же строке самостоятельно нельзя
>>> (lambda x: x / 2)(10)
5
а как её вызвать в одну строку и как сделать многострочной?Никак, лямбда это простое выражение это не безымянная функция, которые есть в JS.
lambda test: test, test+2 # неправильноЗдесь лямбда вернёт кортеж из двух элементов, так должно быть понятнее:
>>> lambda test: (test, test+2)
>>> _(10)
(10, 12)
lambda test: test+2(2) # и так тоже нельзя
>>> (lambda test: test+2)(2)
4
Отредактировано (Окт. 11, 2010 06:17:26)
Офлайн
спасибо!
а анонимных функций, как в JS, в питоне получается нет?
Офлайн
Игнатлямбда это и есть анонимная функция, просто ее специально урезали таким образом до 1ной строчки, чтобы не загромождать код вашей программы. Если есть необходимость использовать многострочную функцию просто объявите ее где-нибудь рядом через def.
спасибо!
а анонимных функций, как в JS, в питоне получается нет?
Офлайн