Gerar uma lista de pares usando lambda

usando lambda, e a partir de um numero limite digitado, estou tentando gerar uma lista com os números pares até esse numero, eis o meu código.

termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0 :
    print("Erro de Sintaxe!!!!")
print (pares = lambda pares : [pares for pares in range(0,termos1)if termos1 % 2 ==0])

não estou conseguindo gerar essa lista, mesmo imprimindo

Você não pode fazer simplesmente assim?

termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0 :
    print("Erro de Sintaxe!!!!")

pares = [x for x in range(termos1 + 1) if x%2 == 0]
print(pares)

Usando lambda ( não sei se tem um sintaxe mais limpa):

termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0 :
    print("Erro de Sintaxe!!!!")

calcular_pares = lambda limite: [x for x in range(limite + 1) if x%2 == 0]                                    
print(calcular_pares(termos1))

Não precisa fazer um range de 1 em 1 e ir testando o resto da divisão. Se você começa o range em zero, basta fazer ele pular de 2 em 2:

termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0:
    print("Erro de Sintaxe!!!!")

print([n for n in range(0, termos1 + 1, 2) ])

Repare no range(0, termos1 + 1, 2). Os argumentos que passei são:

  • 0: o valor inicial
  • termos1 + 1: o valor final (como em um range o valor final não é incluso, eu somo 1 para que ele faça parte). Não ficou claro se deve ser incluso - por exemplo, se digitar “20”, o 20 deve fazer parte da lista? Em caso afirmativo, some 1, senão use apenas termos1
  • 2: é o “passo”, ou seja, o range vai pular de 2 em 2. Como eu comecei do zero, então é garantido que só terá números pares

Não precisa de lambda, afinal o lambda no fundo é apenas uma sintaxe “alternativa” para funções curtas (leia mais a respeito aqui), mas se você só precisa gerar a lista, me parece desnecessário.

A menos, é claro, que você vá reaproveitar o algoritmo para gerar outras listas, aí até faria sentido ter uma função ou um lambda para isso.

Veja como ficaria:

# definir o lambda, recebe um valor máximo e gera a lista com os números pares até este valor
gerar_pares = lambda maximo: [n for n in range(0, maximo + 1, 2) ]

termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0:
    print("Erro de Sintaxe!!!!")

print(gerar_pares(termos1))

Repare que primeiro eu crio o lambda, depois eu chamo ele passando termos1 como argumento. No seu código você estava criando-o dentro do print, mas não estava chamando-o.