Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Lista - Itens e lista dentro de uma lista

carro = [
    'Jetta Variant', 
    'Motor 4.0 Turbo', 
    2003, 
    44410.0, 
    False, 
    ['Rodas de liga', 'Travas elétricas', 'Piloto automático'], 
    88078.64
]

Se cada item fosse uma lista, eu ia criar dois for aninhado e imprimir cada item da lista ou criar uma list comprehensions. Como neste caso para imprimir cada item Jetta Variant Motor 4.0 Turbo 2003 False Rodas de liga Travas elétricas Piloto automático

Agradeço antecipadamente

6 respostas

Olá, João. Tudo bem?

Se entendi bem, você quer imprimir cada item da lista, correto?

Para isso você poderia fazer:

print(carros[i])

Onde i é o index (0, 1, 2, 3...).

Se você quer fazer isso de forma automática, pode utilizar o for da seguinte maneira:

for item in carro:
  print(item)

O resultado seria: Jetta Variant Motor 4.0 Turbo 2003 44410.0 False ['Rodas de liga', 'Travas elétricas', 'Piloto automático'] 88078.64

Olá Leonardo Guerreiro

Entendi, mas veja que um dos itens é uma lista (['Rodas de liga', 'Travas elétricas', 'Piloto automático']). Daí eu deseja imprimir cada item desta lista de forma automática.

Grato.

solução!

Entendi.

Vou te mostrar uma maneira que eu fiz. Como eu sou iniciante em Python, possa ser que tenha built-in functions que facilitariam fazer isso, mas o modo abaixo também da certo.

Criei uma função (printar_informacoes) para printarmos esses valores da forma que você quer.

Vou mostrar ela inteira e depois vou quebrar por partes, ok?

def printar_informacoes ():
  carro_print = []
  for item in carro:
    if type(item) is not list:
      carro_print.append(item)
    elif type(item) is list:
      for acessorios in item:
        carro_print.append(acessorios)

  for item in carro_print:
    print(item)

  for item in carro_print:
    print(item)

Depois basta chamar a função para printar

printar_informacoes()

Quebrando por etapas

1) Primeiro criei uma função para armazenar todo o código, pq assim depois a gente só precisa chamar a função:

def printar_informacoes ():

2) Criei uma nova lista, onde vamos adicionar os novos valores da lista antiga dos carros:

def printar_informacoes ():
  carro_print = []

3) Como queremos passar valor por valor, precisamos adicionar um for. Ele que fará a varredura pela lista.

def printar_informacoes ():
  carro_print = []
  for item in carro:

4) Como temos listas e não listas dentro da lista carro, dividi isso dentro do for. Primeiro vamos pegar os valores que não são listas e jogar para dentro da nossa nova lista carro_print

def printar_informacoes ():
  carro_print = []
  for item in carro:
    if type(item) is not list:
      carro_print.append(item)

5) Já para os valores que são listas, queremos varrer essa lista interna (utilizando for) e copiar cada um desses valores para dentro da nossa nova lista carro_print

def printar_informacoes ():
  carro_print = []
  for item in carro:
    if type(item) is not list:
      carro_print.append(item)
    elif type(item) is list:
      for acessorios in item:
        carro_print.append(acessorios)

6) Agora basta chamar a função :)

printar_informacoes()

Tenho quase certeza que há maneiras mais faceis, mas por estar começando em python eu só conheço essa hahaha.

Entendi, Gostei desta maneira, foi bastante inteligente. Muito obrigado.

Oi João

Perdão, mas eu vi que no código que te passei acima ele estava printando um valor booleano False no meio, por conta da função que criamos.

Para não printar esse valor booleano no meio eu mudei o final da função de:

  for item in carro_print:
      print(item)

para:

  for item in carro_print:
    if type(item) is not bool:
      print(item)

Assim a função só printa se o tipo do item não for boolean.

Segue a função corrigida:

def printar_informacoes ():
  carro_print = []
  for item in carro:
    if type(item) is not list:
      carro_print.append(item)
    elif type(item) is list:
      for acessorios in item:
        carro_print.append(acessorios)

  for item in carro_print:
    if type(item) is not bool:
      print(item)

Um abraço!

Leonardo, pegando seu código gerei a função abaixo. Muito obrigado pela informação.

def imprimiLista(lista):
  for item in lista:
    if type(item) is not list:
      print(item)
    elif type(item) is list:
      for item2 in item:
        print(item2)