【发布时间】:2016-08-06 20:25:27
【问题描述】:
我正在运行一个 Python 脚本,它迭代两个巨大的列表并找到匹配的对。
但是,这似乎需要很长时间。如何加速这个脚本?
import sys
import random
import itertools
def main(args):
target_num = int(999999999)
num_list = range(1, target_num)
rand_list = []
hit_list = []
for _ in itertools.repeat(None, target_num):
rand_list.append(random.randint(1, target_num))
for num in num_list:
for rand_num in rand_list:
if num == rand_num:
print "hit"
if __name__ == "__main__":
main(sys.argv[1:])
【问题讨论】:
-
尽量不要在代码中使用内置名称作为变量名称,这可能会导致挫败感。我指的是您使用
list作为变量名 -
@Smac89 急着写一个问题,搞错了。我修改了变量名。
-
第二个嵌套循环应该是
read_list还是rand_list? -
@Smac89 应该是 rand_list。很抱歉造成混乱。
-
还要考虑列表理解 (
rand_list = [random.randint(1, target_num) for _ in itertools.repeat(None, target_num)])。它们比使用 for 循环更有效,因为您不需要从列表中加载 append 属性并将其作为函数调用。
标签: python loops search iteration