Tengo una tupla de 3 elementos donde uno de los elementos es diferente de los otros dos. Por ejemplo, podría ser algo como: (0.456, 0.768, 0.456)
.
¿Cuál es la forma más fácil de encontrar el índice de este elemento diferente? Una forma en la que puedo pensar es considerar el índice (0, 1)
y (1, 2)
y uno de estos será diferente. Si es (0, 1)
, compare sus elementos con el elemento en 2
de lo contrario, compare los elementos de (1, 2)
con el índice 0
para encontrar el elemento diferente.
Siento que me falta una forma pitónica de hacer esto.
4 respuestas
Podría contar las ocurrencias de cada elemento en la lista y luego encontrar el índice del lugar donde solo existe un elemento, pero tengo la sensación de que esto puede no ser tan eficaz como su solución. Tampoco funcionaría si los 3 valores son distintos.
my_tuple[[my_tuple.count(x) for x in my_tuple].index(1)]
Lo que puede parecer una gran exageración en Python 3, pero no pudo evitar publicar:
import collections
a = (0.768, 0.456, 0.456)
print("Dissimilar object index: ", a.index(list(collections.Counter(a).keys())[list(collections.Counter(a).values()).index(1)]))
Explicación:
collections.Counter(a)
: devolverá un dict de frecuencia, por ejemplo, {0.768:1, 0.456:2}
, etc. Luego, simplemente creamos una lista para aprovechar index(1)
para descubrir el valor que es extraño. Luego usamos a.index(odd_one_out_val)
para encontrar el índice.
Podrías probar esto:
index = [my_tuple.index(i) for i in my_tuple if my_tuple.count(i) == 1][0]
Sin embargo, no estoy seguro de que sea un gran rendimiento.
Un enfoque simple:
def func(x):
a = x[0] == x[2]
b = x[0] == x[1]
return a + 2 * b
func(('A', 'B', 'A'))
# 1
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.