#map .cluster img {
max-width: 100%;
}
我有两个列表列表。 app_um的some_list和other_list之间没有匹配项。但是,对于other_list中的给定app_num,product,prod_size_和prod_amt可能与some_list中给定app_num中的相同。我正在尝试创建一个与some_list相同的final_some_list,除非它已从some_list删除任何列表元素,如果该列表元素具有相同的产品,prod_size和prod_amt作为other_list中的元素。
我尝试过嵌套for循环,列表理解(下面是许多失败尝试的一些例子)。
some_list = [[app_num, product, prod_size, prod_amt]]
other_list = [[app_num, product, prod_size, prod_amt]]
答案 0 :(得分:3)
final_some_list = [x for x in some_list if all(x[1:] != y[1:] for y in other_list)]
修改:
上面的解决方案是 O ( nm )n == len(some_list)
和m == len(other_list)
。如果需要,您可以将其设为 O ( n log m )。将other_list
的所有元素的所有尾部放在二叉搜索树中(假设这些元素是可以的),现在查询该树是 O (log m )。如果元素是可清除的,您甚至可以使用 O ( n )解决方案,因为查询哈希集是 O (1)。
答案 1 :(得分:0)
只有第一个比较包含not
属性,添加!=到所有比较中,这应该有效:
final_some_list = [app for app in some_list for other_app in other_list
if app[1] != other_app[1] and app[2] != other_app[2] and app[3] !=
other_app[3]]