【发布时间】:2018-11-15 19:59:16
【问题描述】:
我有一组s 和一组l 列表,如下所示。
s = {1,2,3,4}
l = [{1}, {1,2,3}, {3}]
输出应该是
out = [{1}, {1,2,3}, {3}]
我正在使用以下代码来完成它。但我希望有更快的方法?也许是某种广播?
out = [i.intersection(s) for i in l]
编辑
列表l 可以长达1000 个元素。
我的最终目标是创建一个矩阵,该矩阵的元素长度为l 元素的成对交集的元素长度。所以s 是l 的一个元素。
out_matrix = list()
for s in l:
out_matrix.append([len(i.intersection(s)) for i in l])
【问题讨论】:
-
过早的优化是邪恶的 有多大的
ll你担心性能?x in y当y是一个集合时是 O(1),所以你当前有一个 O(n) 操作。
标签: python python-3.x set