从python中的列表中删除类似的元素

时间:2016-05-29 12:05:50

标签: python

我想从Python中的列表中删除类似的元素,并在不使用set()的情况下在该列表中打印唯一元素。但是我的代码没有做同样的事情。请帮帮我

我的代码

T = int(raw_input())
a=[]
for i in range(0,T):
    a.append(raw_input())
for i in range(len(a)):
    for j in range(i+1, len(a)):
        if a[i]==a[j]:
            del a[j]
print a

3 个答案:

答案 0 :(得分:4)

a = [1, 2, 3, 4, 3, 5, 2]
a = [x for i, x in enumerate(a) if x not in a[:i]]
print(a)  # [1, 2, 3, 4, 5]

创建新集合通常更好,而不是从旧集合中删除。在这种情况下,我们包括原始列表中尚未出现的那些元素。

答案 1 :(得分:2)

如果您不必删除,可以使用:

yourList = [12, 121, 51, 132, 12, 44, 44, 51]

newList = [v for i,v in enumerate(yourList) if yourList.index(v) == i]
print newList

祝你好运!

答案 2 :(得分:1)

使用删除:

T = int(raw_input())
a=[]

for i in range(0,T):
    a.append(raw_input())


for i in range(len(a)):
    for j in range(i+1, len(a)):
        if a[i]==a[j]:
            a[j]=''


while '' in a:
    a.remove('')

print a 

尝试我的解决方案,而不是删除你可以制作的元素并清空字符串而不是删除它,因为删除会导致列表索引超出范围