gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:37:28 25 4
gpt4 key购买 nike

我有一个 list

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

因此修改将根据修改后的第二个副本的值以与第三个副本相同的方式进行。

我已经编写了一个循环来执行此操作,但我在想是否有任何 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

最佳答案

由于您正在修改对象的属性,因此您可以通过 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

关于python在列表中查找重复的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60668580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com