[小白系列]新数据到来后,若不存在,则保留;若存在,则删除

方法 1:列表操作

“”“遍历需要找出不同的数据列表中的每一个元素
如果某个nums中的数字是no_duplicate_list中没有出现的,
则将它添加到列表no_duplicate_list中
如果某个数字已经在列表中,删除它”""

nums = [1,2,3,4,5,1,2,3,5]
no_duplicate_list = []
for i in nums:
    if i not in no_duplicate_list:
        no_duplicate_list.append(i)
    else:
        no_duplicate_list.remove(i)
print(no_duplicate_list.pop())

方法2:数学的方法(或者叫集合的方法)

‘’’
数学概念 2∗(a+b+c)−(a+a+b+b+c)=c
‘’’

nums = [1,2,3,4,2,3,4]
no_duplicate_list2 = 2*sum(set(nums)) - sum(nums)
print(no_duplicate_list2)

方法3:位操作(使用异或)

‘’’
如果我们对0和二进制位做XOR运算,得到的仍然是这个二进制位
a⊕0=a
如果我们对相同的二进制位做 XOR 运算,返回的结果是 0
a⊕a=0
XOR 满足交换律和结合律
a⊕b⊕a=(a⊕a)⊕b=0⊕b=b
所以我们只需要将所有的数进行 XOR 操作,得到那个唯一的数字。
‘’’

nums = [1,3,5,1,3]
a = 0
for i in nums:
    a ^= i
print(a)

方法4:哈希表法

‘’’
遍历nums 中的每一个元素
查找 hash_table 中是否有当前元素的键
如果没有,将当前元素作为键插入hash_table
最后,hash_table 中仅有一个元素,用 popitem 获得它
‘’’

nums = [1,2,3,4,3,2,1]
hash_table = {}
for i in nums:
    try:
        hash_table.pop(i)
    except:
        hash_table[i] = 1
print(hash_table.popitem()[0])
发布了42 篇原创文章 · 获赞 28 · 访问量 4961

猜你喜欢

转载自blog.csdn.net/KaelCui/article/details/105424389