列表L中的每个元素都是该形式的元组(字段、大小)。例如
L = [ (['A','B'], 5), (['A'], 6), ('C', 1)]
我想挑选名单,使它只包含非相交的成员,每个成员仍然是大于任何其他成员,它可能已经相交。所以我的例子列表会简化为
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的方法?你知道吗
谢谢你的帮助!你知道吗
结果
(这个列表理解使用了一点技巧:
seen.update
总是返回None
,而None or x
总是返回x
-所以seen.update(i) or (i,j)
返回元组(i,j)
,其副作用是更新seen成员列表。)由于
sort
,这应该是O(n logn),而不是O(n^2)。你知道吗相关问题 更多 >
编程相关推荐