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

Porque eu preciso usar os colchetes para perguntar se um item está na lista?

Se eu criar uma lista assim:

lista = [[] for i in range(3)]
lista[0].append(3)
lista[1].append(5)
lista[2].append(7)
3 in lista

=== Retorna False

Mas se eu perguntar:

[3] in lista

=== Retorna True

Não entendi. Achei que estava inserindo o inteiro 3 na posição 0. Porque eu preciso usar os colchetes para perguntar se 3 está na lista? Agradeço as respostas.

2 respostas
solução!

Olá, Lyse! Tudo tranquilo por aí?

Essa divergência está acontecendo porque a variável lista não é uma lista de números, e sim uma lista de listas. Para deixar mais claro vamos olhar o código por partes, tá bem?

lista = [[] for i in range(3)]
print(lista)

Saída:

[[], [], []]

Quando você executa essa primeira linha de código, a saída que você obtém é uma lista que contém três listas vazias dentro.

lista[0].append(3)
lista[1].append(5)
lista[2].append(7)
print(lista)

Saída:

[[3], [5], [7]]

Nesse trecho de código acima, o que está sendo feito é inserindo os elementos 3, 5 e 7 naquelas listas vazias criadas anteriormente. A variável lista possui 3 listas, [3] na posiçãolista[0], [5] na posição lista[1] e [7] na posição lista[2].

Quando você faz: 3 in lista, vai ser retornado False pois está sendo perguntado se o número 3 está em lista, mas na verdade há uma lista que possui o elemento 3 ([3]).

Quando você faz: [3] in lista está sendo perguntado se há uma lista com o elemento 3 dentro de lista, o que é exatamente o caso ([[3], [5], [7]]).

Só um exemplo com listas de mais de um elemento:

teste = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print([1, 2, 3] in teste)

Saída:

True

A saída será True pois a lista teste possui a lista [1, 2, 3] como elemento.

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Olá Bruno! Explicação perfeita! Entendi sim. Faz todo sentido. Muito obrigada