擅长:python、mysql、java
<p>这是比较两个列表中的重复项,而不会比较名称_1中已比较的任何内容。我认为可能会有一个很好的优化。如果要比较两个列表len(names_1)乘以len(names_2),最好避免从names_1和names_2中删除元素。代码不起作用的原因是,代码没有在第二个while循环后重新设置i=0以从头开始名称_1</p>
<pre><code>dup_names=[]
names_1=["a","b","c","d","e"]
names_2=["f","g","h","a","d"]
m=len(names_1)
n=len(names_2)
i=0
k=0
COMPARED=[]
while i<m:
matched_any = False
while k<n:
COMPARED.append((i,k))
if names_1[i]==names_2[k]:
dup_names.append(names_1[i])
names_1[i:i+1]=[]
names_2[k:k+1]=[]
matched_any = True
break
else:
k=k+1
i=0
k=0
if not matched_any:
names_1[i:i+1]=[]
m=len(names_1)
n=len(names_2)
for i_k_pair in COMPARED:
print(i_k_pair)
print('len(COMPARED) =',len(COMPARED))
print('len(dup_names) =',len(dup_names))
print('len(names_1) =',len(names_1))
print('len(names_1) =',len(names_2))
</code></pre>