Форум сайта python.su
0
Здравствуйте!
Хочу с помощью lambda функции добавить один элемент к списку, пробую сделать так:
l=[] print((lambda x: x.append(1)) (l))
None
Отредактировано kt368 (Фев. 10, 2013 20:38:49)
Офлайн
15
lst = [] func = lambda x: lst.append(x) func(10) print(lst) #в данном случае = [10]
Офлайн
0
Так то работает, но мне нужно передать в функцию список, а функция должна добавить элемент-константу к списку…Вроде-бы так, но оно не работает:
lst = [] func = lambda x: x.append('const') print(func(lst))
Офлайн
15
lst = [] func = lambda x: x.append('const') func(lst) print(lst) # ответ ['const']

def func1(x): x.append('const') return x if __name__ == "__main__": lst = [] print(func1(lst))
Отредактировано smoke853 (Фев. 10, 2013 21:44:19)
Офлайн
0
Понятно, просто я забыл что x.append не возвращает ничего.
Тогда подскажите, можно ли сделать такое в одну строку: есть список (lst) из трех чисел, нужно третье число поменять на константу ('const'), полученный список преобразовать в кортеж и записать его в три переменные a,b,c?
Заранее спасибо.
Офлайн
6
лямбда возвращает вам результат работы метода append, а не список.
можно написать так:
l=[]
print ((lambda x: (x.append(1)) or x)(l))
Офлайн
0
Спасибо! Все получилось!
Офлайн
43
можно чище
l = [3] print((lambda x: x+[1])(l))
Офлайн
0
Да, так нагляднее!
Зачем же тогда нужен метод append, если можно просто плюсом добавлять элемент в список?
Офлайн
43
эта операция не изменит исходный список в отличии от append
Офлайн