Considere o seguinte código Python com o qual adiciono um novo list2
todos os itens com índices de 1 a 3 de list1
:
for ind, obj in enumerate(list1):
if 4 > ind > 0:
list2.append(obj)
Como você escreveria isso usando a compreensão de lista, se eu não tivesse acesso aos índices por meio de enumerar?
algo como:
list2 = [x for x in list1 if 4 > ind > 0]
mas como não tenho ind
número, funcionaria?
list2 = [x for x in enumerate(list1) if 4 > ind > 0]
python
list
indexing
list-comprehension
Pav Ametvic
fonte
fonte
list1[1:4]
aqui[x for x in list1[1:4]]
:?list2 = list1[1:4]
Respostas:
fonte
Se você usar
enumerate
, você fazer têm acesso ao índice:fonte
A menos que seu caso de uso real seja mais complicado, você deve apenas usar uma fatia da lista, conforme sugerido por @wim
Para casos mais complicados - se você não precisa realmente do índice - é mais fácil iterar sobre uma fatia ou um islice
ou
Para pequenas fatias, o simples
list1[1:4]
. Se as fatias podem ficar muito grandes, pode ser melhor usar um islice para evitar copiar a memóriafonte