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']