python怎么找出列表中的重复数据_python – 如何在列表中找到重复项并使用它......

要删除重复项,请使用set(a).要打印重复项,例如:

a = [1,2,3,2,1,5,6,5,5,5]

import collections

print [item for item, count in collections.Counter(a).items() if count > 1]

## [1, 2, 5]

请注意,Counter不是特别有效(timings)并且在这里可能有点过分.套装会表现得更好.此代码计算源顺序中的唯一元素列表:

seen = set()

uniq = []

for x in a:

if x not in seen:

uniq.append(x)

seen.add(x)

或者,更简洁地说:

seen = set()

uniq = [x for x in a if x not in seen and not seen.add(x)]

我不推荐后一种风格,因为不明显的是没有看到.add(x)正在做什么(set add()方法总是返回None,因此需要不).

要计算没有库的重复元素列表:

seen = {}

dupes = []

for x in a:

if x not in seen:

seen[x] = 1

else:

if seen[x] == 1:

dupes.append(x)

seen[x] += 1

如果列表元素不可清除,则不能使用集合/ dicts并且必须求助于二??次时间解决方案(将每个解析比较每个).例如:

a = [[1], [2], [3], [1], [5], [3]]

no_dupes = [x for n, x in enumerate(a) if x not in a[:n]]

print no_dupes # [[1], [2], [3], [5]]

dupes = [x for n, x in enumerate(a) if x in a[:n]]

print dupes # [[1], [3]]

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值