Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Obter expressão equivalente a print(list(zip(lista,heights))) usando map()

Sejam:

heights = [x*0.0254 for x in [69,77,54]]

e

lista = [69,77,54]

A expressão:

print(list(zip(lista,heights)))

tem como saída:

[(69, 1.7526), (77, 1.9558), (54, 1.3716)]

Meu objetivo é obter a mesma saída mas utilizando a função map():

Eu tentei fazer:

print(list(map(lambda x,y:zip(x,y),lista,heights)))

mas estou obtendo o erro:

print(list(map(lambda x,y:zip(x,y),lista,heights)))
TypeError: 'int' object is not iterable

O que estou fazendo errado? Como corrigir a expressão usando map() de forma a obter a mesma saída:

[(69, 1.7526), (77, 1.9558), (54, 1.3716)]
1 resposta
solução!

Oi Edson, tudo bem?

Neste caso, para usar o map não é necessário a utilização do zip, basta retornar uma tupla diretamente, pois utilizando o zip ele retorna todas as tuplas de uma só vez e como iremos utilizar a map queremos que seja retornada as tuplas uma por vez, aplicando a função lambda sobre cada valor de nossos iteráveis.

Portanto, para sanar seu problema, podemos fazer:

print(list(map(lambda x,y: (x,y),lista,heights)))

Tudo bem?! :)

Qualquer dúvida estou a disposição. Espero ter ajudado. Abraços e ons estudos!