2017-05-04 28 views
0

我试过这个,但我不知道我的代码出了什么问题,它会打印正确的值,但是,当我追加值它打印无,还有,它口口声声说有错误的行if L1[q]==L2[q]:一个程序,需要两个列表,并打印1个列表,其中包含常见的值

a= [3,1,4,5] 
b= [3,4,5] 
def intersect(L1,L2): 
    q=0 
    w=0 
    li=[] 
    if len(L1)>len(L2): 
     while q<len(L1): 
      for i in L1: 
       if L1[q]==L2[q]: 
        print li.append(L1[q])  
        q+=1 
       else: 
        L1.remove(L1[q]) 
    if len(L2)>len(L1): 
     while w<len(L2): 
      for i in L2: 
       if L2[w]==L1[w]: 
        print li.append(L2[q]) 
        q+=1 
       else: 
        L2.remove(L2[q]) 
intersect(a,b) 
+0

肯定是因为这两个列表长度不一样。 – bhansa

回答

1

您可以使用组来获得两个列表,如交叉口:

代码:

def intersect(L1, L2): 
    print(list(set(L1) & set(L2))) 

测试代码:

a = [3, 1, 4, 5] 
b = [3, 4, 5, 6] 

intersect(a, b) 

结果:

[3, 4, 5] 
0
a= [3,1,4,5] 
b= [3,4,5] 
print(list(set(a)&set(b))) #<=== 

RESULT

[3,4,5]

+0

虽然此代码片段可能会解决问题,但[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来挤占代码,这会降低代码和解释的可读性! – Carpetsmoker

相关问题