[python面试题] 保持列表的原顺序并进行去重的5种方法

    L = [4, 1, 7, 4, 4, 6, 2, 1, 6, 6],想办法去掉列表的重复元素,同时保持原来的排列顺序;

# 第1种方法,利用集合去重,然后用原列表的index方法排序
L = [4, 1, 7, 4, 4, 6, 2, 1, 6, 6]
L1 = list(set(L))
L1.sort(key=L.index)
print(L1)
print('\n')

# 第2种方法,利用for和if进行有序去重
new_list = []
for i in L:
    if i not in new_list:
        new_list.append(i)
print(new_list)
print('\n')

# 第3种方法,利用索引去重
new_list = []
for index, num in enumerate(L):
    if L.index(num) == index:  # 列表的index方法只从列表找第一个匹配元素的索引,后面重复的索引不会再找
        new_list.append(num)
print(new_list)
print('\n')

# 第4种方法,利用列表的count方法删除重复元素
news_ids = L[:]
for i in L:
    while news_ids.count(i) > 1:
        del news_ids[news_ids.index(i)]

news_ids.sort(key=L.index)
print(news_ids)
print('\n')

# 第5种方法,利用字典的key值不重复的特性去重
new_dict = {}.fromkeys(L)
print(new_dict)
L1 = list(new_dict.keys())
L1.sort(key=L.index)
print(L1)
# 结果
[4, 1, 7, 6, 2]


[4, 1, 7, 6, 2]


[4, 1, 7, 6, 2]


[4, 1, 7, 6, 2]


{1: None, 2: None, 4: None, 6: None, 7: None}
[4, 1, 7, 6, 2]

总结:

    对列表去重是比较简单的,直接用集合的特性去重就行,但是要保持原列表的顺序并去重就比较麻烦,这里介绍了5种保持列表的原顺序并进行去重的方法。


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值