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