Common elements between two lists with no duplicates

后端 未结 5 1345
时光说笑
时光说笑 2021-01-16 05:19

Problem is this, take two lists, say for example these two:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]


        
相关标签:
5条回答
  • 2021-01-16 05:37

    using list comprehensions, l think it had be short and simple if it was implemented as following

    a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
    [i for i in a and b if i in a and b]
    

    result:

    [1, 2, 3, 5, 8, 13]
    
    0 讨论(0)
  • 2021-01-16 05:40
    c = []
    for items in a:
        for numbers in b:
            if items == numbers:
                if items in c:
                    None
                else:
                    c.append(items)
    print(c)
    
    0 讨论(0)
  • 2021-01-16 05:50
    1. You are appending a list containing i to c, so i not in c will always return True. You should append i on its own: c.append(i)

    Or

    1. Simply use sets (if order is not important):

      a = [1, 1, 2, 2, 3, 5, 8, 13, 21, 34, 55, 89]
      b = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
      c = set(a) & set(b)  #  & calculates the intersection.
      print(c)
      #  {1, 2, 3, 5, 8, 13}
      

    EDIT As @Ev. Kounis suggested in the comment, you will gain some speed by using
    c = set(a).intersection(b).

    0 讨论(0)
  • 2021-01-16 05:59

    The below code would work:

    newlist = []
    for x in b:
        if x in a:
            if x in newlist:
                print("duplicate")
            else:
                newlist.append(x)
    
    for y in newlist:
        print(y)   
    
    0 讨论(0)
  • 2021-01-16 06:02

    Using intuition of sets, You could do something like this...

    filtered_arr = list(set(b)-set(a))

    First you convert 2 arrays into sets, then take the substitute of it convert the result into the list again.

    0 讨论(0)
提交回复
热议问题