我是Python的新手,目前我正在解决问题以提高我的编程技能。我碰到过一个问题,我需要从python的3 Lists
中找到共同的元素,并打印出常用元素的数量。优化多个for循环
我的代码及以下步骤:
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次迭代是非常耗时的,按照我的理解。那么如何优化这些问题以及解决这类问题的更好方法,以及如何使用更好的性能改进代码并在更短的时间内生成输出。请帮助我理解这一点。提前致谢。非常感谢您的帮助。
如果你有集合,那么十字路口似乎是一个更自然的方式来做到这一点;使用'&'运算符。另外请注意,你不能在一个集合中有重复元素。 – kwinkunks
我意识到在写完第一种方法后不久,我没有添加关于重复元素的位,因为他的情况下他只需要每个值中的一个:) – Peter
感谢。我会阅读关于集合并尝试实现集合的概念。 – Dev