¿Cómo producir una lista de índices impares a partir de un número en Python?

CorePress2024-01-24  11

Quiero producir una lista que contenga solo los índices impares de un número entero de Python.

esto es lo que intenté hacer:

number = 5167460267890853
numberList = [num for num in str(number)]
oddIndex = [num for num in numberList if numberList.index(num) % 2 == 0]
print(oddIndex)

Salida:

['5', '6', '4', '6', '0', '6', '8', '0', '8', '5']

Resultado esperado:

['5', '6', '4', '0', '6', '8', '0', '5'] 


------------------------------------

Puedes utilizar el corte de cuerdas con un paso de 2. Convierta el número en una cadena, tome solo los índices impares y luego conviértalo en una lista.

Utilizando este enfoque en tu intento, puedes intentar:

number = 5167460267890853
numberList = [num for num in str(number)]
numberList = numberList[::2]

o simplemente use la función de lista incorporada:

number = 5167460267890853
oddIndex = list(str(number)[::2])

Ambos producen el resultado deseado.

Las respuestas a una pregunta similar también utilizan una técnica similar aquí



------------------------------------

list.index() devolverá el índice del primer elemento visto en la lista. Puedes usar enumerate() en su lugar como en este ejemplo:

number = 5167460267890853
out = [num for k, num in enumerate(str(number)) if not (k % 2)]
print(out)
# ['5', '6', '4', '0', '6', '8', '0', '5']

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare