Hai*_*iro 1 python arrays list
我有这个清单:
mylist = [20, 30, 25, 20, 30]
Run Code Online (Sandbox Code Playgroud)
使用后获取重复值索引后
[i for i, x in enumerate(mylist) if mylist.count(x) > 1]
Run Code Online (Sandbox Code Playgroud)
结果是:
`[0, 1, 3, 4]`
Run Code Online (Sandbox Code Playgroud)
有两对重复值.我想知道,我怎样才能获得更高的重复值?在此列表中,它是30或任何索引,1或者4,而不是整个重复值列表.
问候...
这个是O(n)
>>> from collections import Counter
>>> mylist = [20, 30, 25, 20, 30]
>>> max(k for k,v in Counter(mylist).items() if v>1)
30
Run Code Online (Sandbox Code Playgroud)
获取最大重复值:
max(x for x in mylist if mylist.count(x) > 1)
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于重复的count()调用,它具有O(n ** 2)性能。这是一种更简单的方法来完成将具有O(n)性能的相同操作,如果列表很长,则很重要:
seen = set()
dups = set()
for x in mylist:
if x in seen:
dups.add(x)
seen.add(x)
max_dups = max(dups)
Run Code Online (Sandbox Code Playgroud)