python - 优化多个for循环

标签 python performance for-loop optimization

我是 Python 的新手,目前正在解决问题以提高我的编码技能。我遇到了一个问题,我需要从 3 Lists 中找到共同元素。在 python 中并打印公共(public)元素的数量。

我的代码和程序如下:

print "Enter n: "
n = raw_input()
print "Enter the values: "
nlist = map(int, raw_input().split())
print "Enter m: "
m = raw_input()
print "Enter the values: "
mlist = map(int, raw_input().split())
print "Enter k: "
k = raw_input()
print "Enter the values: "
klist = map(int, raw_input().split())
plist = []
qlist = []

for x in range(0,int(n)):
    for y in range(0,int(m)):
        if (nlist[x]==mlist[y]):
            plist.append(nlist[x])

for z in range(0,int(k)):
    for u in range(0,len(plist)):
        if (klist[z]==plist[u]):
            qlist.append(klist[z])

print len(qlist)

首先,我从前两个 Lists - nlist and mlist 中找到了共同的元素并将它们存储在一个新的 List - plist 中然后拿了第三个List - klist并在 Lists - plist and klist 中找到共同元素并将它们添加到新的 List - qlist 中并找到最后的长度 List .我在想如果 Lists 的长度怎么办?非常高,比如 4000 和两个 for根据我的理解,循环运行 4000 次迭代非常耗时。那么如何优化此类问题以及解决此类问题的更好方法是什么以及可以使用哪些方法来改进代码以提高性能并在更短的时间内产生输出。请帮助我理解这一点。提前致谢。非常感谢您的帮助。

最佳答案

看看set.intersection :

>>> nlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> mlist = [1, 3, 5, 7, 9]
>>> klist = [1, 4, 7, 10]
>>> set(nlist).intersection(mlist)
{1, 3, 5, 9, 7}
>>> set(nlist).intersection(mlist).intersection(klist)
{1, 7}

关于python - 优化多个for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380384/

相关文章:

python - 多处理中的动态池大小?

javascript - 查找已更改的内容并仅上传更改

javascript - 性能:具有多个语句的单个循环或具有单个调用的多个循环

sql - oracle View 和网络流量

java - 从 'a' || 简化 s.charAt 'b' || 'c' ||到一个 s.charAt

python - Sublime Text 中特定于语言的包设置

python - 反转元组和反转列表有什么区别?

c++ - 从头开始在汇编中编写 for 循环

java - 如何杀死活细胞并复活活细胞而不弄乱计数器?康威生命游戏中的逻辑错误

python - 使用 xml.dom.minidom 中的 parseString 解析 XML 文件效率低下?