python如何删除list里重复的元素

要求是把列表里的重复元素删除,只保留没有重复的元素。例如:a=['a','b','c','d','a','a']如何变成:a=['b','c','d']... 要求是把列表里的重复元素删除,只保留没有重复的元素。
例如:
a=['a','b','c','d','a','a']
如何变成:
a=['b','c','d']
展开
 我来答
lpe234
推荐于2017-09-19 · TA获得超过2778个赞
知道小有建树答主
回答量:1250
采纳率:50%
帮助的人:553万
展开全部

这个可简单可复杂。

简单的:利用集合

a = list(set(a)) #这样就可以了,是不是很简单

复杂的:

就是先对列表排序,然后比较相邻元素是否相同,相同的则删除后面的。大体算法思路,代码自己写吧

当然还有其他的算法...

-----------------------------------------------------------------------------------

额, 不好意思,看错了

def Q(a):
    aa=[]
    for i in a:
        if a.count(i)==1:
            aa.append(i)
    return aa

这个就可以了,利用 list.count(obj) 计算obj在list中出现的次数进行判断

追问
这串代码的结果是否是把a从新的列表中删除了???是的话,就太感谢了
追答

我真无语,你看不懂代码吗?真看不懂的话,运行一下就是了。费劲...

def Q(a):
    aa=[]
    for i in a:
        if a.count(i)==1:
            aa.append(i)
    return aa

a=['a','b','c','d','a','a']

aa = Q(a)

print a
print aa

# 输出
# ['a', 'b', 'c', 'd', 'a', 'a']
# ['b', 'c', 'd']
chenchiheng123
推荐于2017-09-10 · TA获得超过396个赞
知道小有建树答主
回答量:131
采纳率:100%
帮助的人:143万
展开全部

使用列表推导,只保留元素个数等于1的

a = ['a', 'b', 'c', 'd', 'a', 'a']
b = [x for x in a if a.count(x) == 1]
print b


列表推导中的x for x in a if a.count(1) == 1和下面的for循环等价,不过更简洁:

b = []
for x in a:
    if a.count(x) == 1:
        b.append(x)
print b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8873d7de9
2018-05-18 · TA获得超过700个赞
知道小有建树答主
回答量:141
采纳率:100%
帮助的人:64万
展开全部

代码如下:

oldList = ['a','b','c','d','a','a']
newList = []
for letter in oldList:
    if letter not in newList:
        newList.append(letter)
print newList
运行结果:
['a', 'b', 'c', 'd']
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
711倾听悉尼
2020-03-29
知道答主
回答量:1
采纳率:0%
帮助的人:622
展开全部
a=["a","b","c","c","d"]
print("删除前的list:\n",a)
b={}
b=b.fromkeys(a)
a=list(b.keys())
print("删除后的list:\n",a)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
meiyujack
2020-05-22
知道答主
回答量:28
采纳率:0%
帮助的人:11.1万
展开全部
来来来,看我的
for i in a[:]:
if i=='a':
a.remove(i)

是不是很简单?不过有大神能再解释下深层原因,让我们知其所以然就更好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式