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

#python #lambda #tuples

Вопрос:

 val_by_vec = lambda x ,t=(): print(next(x ,t[i]) for t[i] in range(0,len(t)))

val_by_vec('Raj',((2,"Raj"),(3,"Amalu")))
 

выход:

 <generator object <lambda>.<locals>.<genexpr> at 0x000002A1ABC5FEB0>
 

ожидаемый результат:

 ('Raj', (2, 'Raj'))
('Raj', (3, 'Amalu'))
 

Комментарии:

1. Попробуйте распечатать содержимое: for ele in generator: print(ele)

2. Основываясь на вашем коде, приведенный ниже ответ может делать то, что вы на самом деле хотите, но не делает то, что вы сказали, что хотите. Вам нужно лямбда-выражение, которое возвращает кортеж, или вам нужно лямбда-выражение, которое выводит кортеж? «печать» и «возврат» не являются синонимами.

Ответ №1:

next в любом случае будет возвращен только следующий объект из этой итерации, так что использовать его не имеет смысла, вы можете просто распаковать понимание списка

 val_by_vec = lambda x ,t=(): print(*[(x ,t[i]) for i in range(0,len(t))], sep="n")
 

Кроме того, это не ошибка, вы печатаете созданный вами объект генератора