用对象获取列表反集,速度飞快

供新手入门和老手参考的教程和相关资料,包括中文帮助
tmplinshi
Posts: 1214
Joined: 01 Oct 2013, 14:57

用对象获取列表反集,速度飞快

03 Mar 2015, 00:46

昨天我碰到一个问题,要从 10 万个数字中获取 6 万左右数字的反集。我刚开始用的方法是用 InStr() 搜索 10 万次,结果是非常慢,大概要 40 秒钟。

本以为没其他方法了。不过还是带着试一试的态度,在英文板块发了个求助帖,别人回复说用对象。一测试竟然 0 秒就完成了!这个方法太有用了,特意在这里发个帖子让更多人知道 :D

测试代码:

Code: [Select all] [Expand] [Download] (Script.ahk)GeSHi © Codebox Plus

User avatar
RobertL
Posts: 540
Joined: 18 Jan 2014, 01:14
Location: China

Re: 用对象获取列表反集,速度飞快

15 Apr 2015, 02:33

嗯,用对象的键做索引(索引值,或,单纯的,键是否存在),感觉是最快的做法。

  • 如果期望的返回结果也是对象(数组),可以oResultList:=objClone(oFullList),遍历oSubList并删除oResultList中相应项。
  • 感觉尽量用对象。且由于要遍历(而非索引SubList,可使用StrSplit进行列表至对象的转换。

Code: [Select all] [Download] (Script.ahk)GeSHi © Codebox Plus

oSubList:=StrSplit(SubList,",")
oResultList:=objClone(oFullList)
for _,v in oSubList
objRemove(oResultList,v)
没测试...
我为人人,人人为己?

Return to “教程资料”

Who is online

Users browsing this forum: No registered users and 1 guest