3 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
#if they can be anywhere
#mehtod 1
from 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 example
newCol2 = ['A', 'B', 'C', 'D', 'E', 'A']
print(list((Counter(newCol1) - Counter(oldCol1)))) # returns a list of unique value
print(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 2
from collections import defaultdict
oldCol1 = [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 error
for item in oldCol1:
oldlist_dict[item] += 1
for 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 list
print(newCol1[len(oldCol1):])
print(newCol2[len(oldCol2):])
print(newCol1_1[len(oldCol1):])

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果您知道“新添加的元素”始終附加在列表的末尾,則只需從舊列表的長(zhǎng)度開始進(jìn)行切片。IE
old_til_here = len(oldCol1)
list_of_new_elements_col_1 = newCol1[old_til_here:]
list_of_new_elements_col_2 = newCol2[old_til_here:]

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
您將需要獲取第一個(gè)索引中不存在的索引,因此僅使用不帶有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)
添加回答
舉報(bào)