text: Q:
  
  como obter o elemento de uma lista baseada em outra lista
  
  Queria tirar um dúvida que estou tendo com listas em Python, segue um exemplo abaixo:   
  lista1 = [2, -1 , 4, -5]  
  lista2 = [1, 2, 4, 9]  
  
  A medida que o elemento da lista1 seja > 0, eu preciso pegar o elemento da lista1 e lista2 na mesma posição, e adicionar ambos em lista diferentes, alguém pode me ajudar?   
  As saídas esperadas para o exemplo são as listas [2, 4], que são os valores positivos em lista1, e [1, 4] que são os respectivos valores em lista2.
  
  A:
  
  Primeiro, você precisa definir sua estrutura de filtro, para definir quais posições permanecerão na lista e quais serão removidas. Para tal, basta criar uma lista que possui True nas posições em que o valor em lista1 é positivo e False caso contrário.
  filtro = [valor1 > 0 for valor1 in lista1]
  
  Isso gerará a lista [True, False, True, False] indicando o que permanece e o que sairá.
  
  Nota: aqui é importante que filtro seja uma lista (e não um gerador), pois mais abaixo ele será consumido mais de uma vez (gerador não permitirá isso).
  
  A partir disso basta utilizar a função itertools.compress:
  from itertools import compress
  
  nova_lista1 = list(compress(lista1, filtro))
  nova_lista2 = list(compress(lista2, filtro))
  
  Assim, nova_lista1 será [2, 4] e nova_lista2 será [1, 4].
  A própria função compress retorna um objeto iterável, então se não precisar de todos os valores em memória poderá utilizar o próprio retorno ao invés de gerar uma nova lista (propriamente dita).
  De uma forma muito mais iterativa, você poderia percorrer as duas listas gerando as novas quando a condição for satisfeita:
  lista1 = [2, -1 , 4, -5]  
  lista2 = [1, 2, 4, 9]  
  
  nova_lista1 = []
  nova_lista2 = []
  
  for valor1, valor2 in zip(lista1, lista2):
    if valor1 > 0:
      nova_lista1.append(valor1)
      nova_lista2.append(valor2)
  
  O que geraria o mesmo resultado.
  
  