列表L中的每個元素都是表單(字段,大小)的元組。例如剔除列表以查找Python中最偉大的非相交成員
L = [ (['A','B'], 5), (['A'], 6), ('C', 1)]
我想剔除列表,以便它僅包含非相交成員,並且每個殘留構件比它可能已相交任何其他成員更大。因此,例如列表L將減少到
L = [ (['A'], 6), ('C', 1)]
目前我有它實現像這樣:
def betterItem(x, y):
return (x != y and
set(x[0]) & set(y[0]) and
x[1] > y[1])
for i in range(len(L)-1):
L[:] = [x for x in L for y in L if betterItem(x, y)]
是否有更好/更快/更Python這樣的方式?
感謝您的幫助!
看起來相當pythonic給我。你在那裏的速度太慢了嗎?您可以嘗試從列表成員中找到匹配的索引對,然後僅在這些索引上調用betterItem來減少它們。 –
@Lattyware完成,感謝提醒......我的SO訪問往往是非常偶然的,我忘了這麼做。 – Albeit