python面试题十七(列表如何去除重复的元素,还是保持之前的排序?)

将列表 L = [3, 1, 2, 1, 3, 4]去掉重复的元素,但保留原先顺序。 最后结果应该是:[3, 1, 2, 4]

如果不保留顺序的去重,很好处理,比如用set

L = [3, 1, 4, 2, 3]
list(set(L))

如果要保留原先顺序不变,同样也有很多种方法:

方法一:

L = [3, 1, 2, 1, 3, 4]
T = []
for i in L:
	if not i in T:
		T.append(i)
print(T)

[3, 1, 2, 4]
方法二:

L = [3, 1, 2, 1, 3, 4]
T = []
[T.append(i) for i in L if not i in T ]
ptint(T)

[3, 1, 2, 4]
方法三:

L = [3, 1, 2, 1, 3, 4]
T = list(set(L))
T.sort(key=L.index)
print(T)

[3, 1, 2, 4]

方法四:

L = [3, 1, 2, 1, 3, 4]
T = []
for i,v in enumerate(L):
	if L.index(v) == i:
		T.append(v)
print(T)

[3, 1, 2, 4]
方法五:

L = [3, 1, 2, 1, 3, 4]
T = {}.fromkeys(L).keys()
T.sort(key=L.index)
print(T)

[3, 1, 2, 4]
方法六:

L = [3, 1, 2, 1, 3, 4]
T = L[:]
for i in L:
	while T.count(i) > 1:
		del T[T.index(i)]
T.sort(key=L.index)
print(T)

[3, 1, 2, 4]
方法七:

L = [3, 1, 2, 1, 3, 4]
T = sorted(set(L), key=L.index)
print(T)

[3, 1, 2, 4]
方法八:

L = [3, 1, 2, 1, 3, 4]
func = lambda L,i: L if i in L else L + [i]
T = reduce(func, [[], ] + L)
print(T)

[3, 1, 2, 4]

发布了56 篇原创文章 · 获赞 0 · 访问量 1260

猜你喜欢

转载自blog.csdn.net/weixin520520/article/details/105452542