所以我們說我有這個類:Python的 - 獨立重複的對象爲不同的列表
class Spam(object):
def __init__(self, a):
self.a = a
現在我有這些對象:
s1 = Spam((1, 1, 1, 4))
s2 = Spam((1, 2, 1, 4))
s3 = Spam((1, 2, 1, 4))
s4 = Spam((2, 2, 1, 4))
s5 = Spam((2, 1, 1, 8))
s6 = Spam((2, 1, 1, 8))
objects = [s1, s2, s3, s4, s5, s6]
因此運行某種方法後,我需要有兩個列表的對象在同一列表中具有相同的a
屬性值,而其他對象具有唯一的a
屬性。
像這樣:
dups = [s2, s3, s5, s6]
normal = [s1, s4]
因此,它是像得到複製,但除了它也應該添加對象,甚至第一次出現是股同a
屬性值。
我寫了這個方法,它似乎工作,但它在我看來是相當醜陋(並且可能不是非常優化)。
def eggs(objects):
vals = []
dups = []
normal = []
for obj in objects:
if obj.a in vals:
dups.append(obj)
else:
normal.append(obj)
vals.append(obj.a)
dups_vals = [o.a for o in dups]
# separate again
new_normal = []
for n in normal:
if n.a in dups_vals:
dups.append(n)
else:
new_normal.append(n)
return dups, new_normal
任何人都可以寫出這樣的問題更合適的Python的方法呢?
這似乎把我'類型錯誤:「垃圾郵件」對象未標化的 '我不知道,如果是我的結束,會考慮它,當我在有時間你的'except_at'函數。 – MooingRawr
我的歉意!我將錯誤的變量傳遞給'except_at'。修復。 –