前提很简单:我有两个整数a和b,我想找到一个i,使得a + i和b + i都在给定的列表中。该列表rs非常庞大(10亿项)。以下是我的代码:
def getlist(a,b):
a1 = set([i - a for i in rs if i>a])
b1 = set([i-b for i in rs if i>b])
tomp = list(a1.intersection(b1))
return tomp
问题在于a1和b1首先被预先计算,这会创建一个内存问题。我能否以某种方式优化我的代码?对该方法的一般评论也受欢迎。
示例输入:
rs = [4,9,16]
a = 3
b = 8
期望的输出结果:
getlist(3,8) = [1]
tomp = [i - b for i in rs if i - b in a1]
- Dani Mesejoa1 = set([i - a for i in rs if i>a])
和b1 = set([i-b for i in a1 if i>b])
? - Ravi Teja