una - separar numeros pares e impares python
¿Dividir una lista en dos por elementos pares e impares? (3)
Posible duplicado:
Programa Python para dividir una lista en dos listas con elementos alternos
Tengo una lista como esta:
list1 = [blah, 3, haha, 2, pointer, 1, poop, fire]
La salida que quiero es:
list = [3, 2, 1, fire]
Entonces, lo que quiero es hacer una lista de elementos pares de la lista anterior. Intenté usar una declaración for
e intenté eliminar el elemento 2nth mientras los agregaba a la lista, pero no funcionó:
count = 0
for a in list1:
list2.append(a)
if count % 2 = = 1:
list2.pop(count)
print list2
¿Alguna sugerencia?
Esto debería proporcionarle lo que necesita: muestrear una lista a intervalos regulares desde un desplazamiento 0 o 1:
>>> a = [''blah'', 3,''haha'', 2, ''pointer'', 1, ''poop'', ''fire'']
>>> a[0:][::2] # even
[''blah'', ''haha'', ''pointer'', ''poop'']
>>> a[1:][::2] # odd
[3, 2, 1, ''fire'']
Tenga en cuenta que en los ejemplos anteriores, la primera operación de división ( a[1:]
) muestra la selección de todos los elementos del índice de inicio deseado, mientras que la segunda operación de división ( a[::2]
) muestra cómo seleccionar todos los demás elementos en la lista.
Una operación de corte más idiomática y eficiente combina los dos en uno, a saber, a[::2]
( 0
puede omitirse) y a[1::2]
, que evita la copia innecesaria de la lista y se debe utilizar en el código de producción, como Otros han señalado en los comentarios.
Puede simplemente dividir la lista: Para impar: a[1::2]
Para par: a[::2]
Puede utilizar el corte de lista. El siguiente fragmento lo hará.
list1 = [''blah'', 3, ''haha'', 2, ''pointer'', 1, ''poop'', ''fire'']
listOdd = list1[1::2] # Elements from list1 starting from 1 iterating by 2
listEven = list1[::2] # Elements from list1 starting from 0 iterating by 2
print listOdd
print listEven
Salida
[3, 2, 1, ''fire'']
[''blah'', ''haha'', ''pointer'', ''poop'']