※ 引述《stba5328 (St. Ba)》之铭言:
: 想请问一下
: 我想从x, y两个元素数量相等list当中,删除所有值为-9999的项,
: 并且另一list同index的项目也要删除,但因为list中大概有180万笔,
: -9999的联集数量大概57万笔,该如何加速以下的程序呢?
: def get_index(a):
: lst = [i for i, j in enumerate(a) if j == -9999]
: return lst
: indx = get_index(x)
: indy = get_index(y)
: indlst = list(set(indx) | set(indy))
: xlst = [j for i, j in enumerate(x) if i not in indx]
: ylst = [j for i, j in enumerate(y) if i not in indy]
最高指导原则:各 list 中各个元素只看一次
因为你有那么多资料, 当然是看越少次越好
所以只能用一个 for 循环, 就要把两个串行走完
可以这样想: