[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种保持列表的原顺序并进行去重的方法。


你可能感兴趣的:(python编程,面试题)