python在列表中找到重复的对象

问题描述 投票:1回答:2

我有一个清单

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

最大长度不超过500

所有对象都具有属性x,y,z,a

如果在object.x中重复为:,我必须修改object.y:

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

保证重复项将出现在连续的对象中。

例如,可能有两个以上重复项

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

所以修改将基于修改后的第二个副本的值以与第三个副本相同的方式进行。

我写了一个循环来做,但是在想是否有任何Pythonic /更快的方法来做。我正在使用python3.7

编辑:

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 
python python-3.x python-3.7
2个回答
1
投票

由于您正在修改对象的属性,因此可以通过zip遍历连续的对:


0
投票

@Shadow Ranger's comment绝对是前往此处的方法。我没有对此进行任何测试,但是应该可以解决问题

© www.soinside.com 2019 - 2024. All rights reserved.