pitón encontrar objetos duplicados en una lista

shh:

Tengo una lista

l = [object0, object1, object2, object3, object4....object499]

longitud máxima es de no más de 500

Todos los objetos tienen atributos x, y, z, una

Tengo que modificar object.y si duplicados en object.x como:

if object9.x == object10.x:
  object9.y = object9.z * object9.a/1000
  object10.y = object10.y - object9.z * object9.a/1000

Se garantiza que los duplicados estarán en objetos consecutivos.

Puede haber más de 2 duplicados, es decir, por ejemplo

object12.x == object13.x == object14.x

así modificación procederá de la misma manera de la tercera duplicado basado en el valor de la segunda duplicado modificado.

He escrito un bucle para hacerlo, pero estaba pensando que si hay alguna manera Pythonic / más rápida de hacerlo. Estoy usando python3.7

EDITAR:

tag = None
for i, o in enumerate(l):
  if tag is None:
     x_a = o.x
  elif x_a == o.x #duplicate found
    temp = o.y
    c_over = 0
    c_value = o[i-1].z * o[i-1].a/1000
    if c_value < o[i-1].y:
       o[i-1].y = c_value
       c_over = temp - c_value #carry over value
    o[i] = c_over # either zero of carry over value
  x_a = o.x 
un invitado :

Dado que se está modificando los atributos de los objetos puede recorrer a través de pares consecutivos a través de zip:

for a, b in zip(l, l[1:]):
    if a.x == b.x:
        a.y = a.z * a.a/1000
        b.y = b.y - a.y

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=282892&siteId=1
Recomendado
Clasificación