#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")
Кроме того, это не ошибка, вы печатаете созданный вами объект генератора