缥缈止盈
#if they can be anywhere#mehtod 1from collections import Counter oldCol1 = [1, 2, 3, 4, 5]oldCol2 = ['A', 'B', 'C', 'D', 'E']newCol1 = [1, 2, 3, 4, 5, 6]newCol1_1 = [1, 2, 3, 4, 5, 6, 6, 7, 7] #different examplenewCol2 = ['A', 'B', 'C', 'D', 'E', 'A']print(list((Counter(newCol1) - Counter(oldCol1)))) # returns a list of unique valueprint(list((Counter(newCol2) - Counter(oldCol2))))new_item_added_dict = Counter(newCol1_1) - Counter(oldCol1)print( list(new_item_added_dict.elements())) # elements() returns an iterator# if you want all the new values even duplicates like in newCol1_1 # ie if you want ans to be [6, 6, 7, 7] then use elements()# else use list() if you just want unique value updates [6,7]print( list(new_item_added_dict)) # output # [6] # ['A'] # [6, 6, 7, 7] # [6, 7]#--------------------------------------------------------------------- #method 2from collections import defaultdictoldCol1 = [1, 2, 3, 4, 5]newCol1 = [1, 2, 3, 4, 5, 6] # -->[6]# [1, 2, 3, 4, 5, 6, 5] --> [6,5]new_item_list = []oldlist_dict = defaultdict(lambda:0) #default value of key is 0 and with defualtdict you will not key errorfor item in oldCol1: oldlist_dict[item] += 1for item in newCol1: if item in oldlist_dict and oldlist_dict[item] > 0: oldlist_dict[item] -=1 else: # its a new item new_item_list.append(item)print(new_item_list)#--------------------------------------------------------------------- #if new items are always appended ie added to end of old listprint(newCol1[len(oldCol1):]) print(newCol2[len(oldCol2):])print(newCol1_1[len(oldCol1):])
慕工程0101907
您将需要获取第一个索引中不存在的索引,因此仅使用不带有symmetric_difference的集合。使用enumerate()可使索引更容易。oldCol1 = [1, 2, 3, 4, 5]oldCol2 = ['A', 'B', 'C', 'D', 'E']newCol1 = [1, 2, 3, 4, 5, 6]newCol2 = ['A', 'B', 'C', 'D', 'E', 'A']indexes = [i for i, v in enumerate(newCol1) if v not in set(oldCol1)]resultCol1 = [newCol1[i] for i in indexes]resultCol2 = [newCol2[i] for i in indexes]print(resultCol1, resultCol2)