Pythonは、リスト内の重複したオブジェクトを検索します

Shhは:

私はリストを持っています

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

重複が連続したオブジェクトになることが保証されます。

例えば2つの以上の重複すなわちがあるかもしれません

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

そう修飾は、修飾2重複の値に基づいて第3の重複するのと同様に進行します。

私はそれを行うためのループを書かれているが、それをやってのいずれかの神託/速い方法があるかどう考えていました。私はpython3.7を使用しています

EDIT:

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 
ゲスト :

あなたは、オブジェクトの属性を変更しているので、あなたは、連続したペアをループはVIAことができます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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=282887&siteId=1