在python列表中查找单个唯一值

qij5mzcb  于 2021-08-20  发布在  Java
关注(0)|答案(5)|浏览(439)

我试图创建一个函数,该函数在python列表中返回唯一的值。例如:

List = [1,1,1,1,2,1,1,1,1,]

如何返回唯一值,2。
我尝试了以下方法:

import numpy as np

def find_uniq(arr):
    abc = np.array(arr)
    return list(np.unique(abc))

但是,当我尝试这个^^^^时,它返回(2)两个值,1和2。因为它们都是列表中唯一的值。虽然我只想要2个。

iyzzxitl

iyzzxitl1#

试试这个:

>>> from collections import Counter
>>> c = Counter( [1,1,1,1,2,1,1,1,1,])
>>> c
Counter({1: 8, 2: 1})
>>> print ([k for k,v in c.items() if v==1])
[2]

这将快速告诉您是否没有唯一的元素,或者是否有多个元素。

ccrfmcuu

ccrfmcuu2#

numpy.unique 然后选择计数为1的值:

lst = [1,1,1,1,2,1,1,1,1]
val, cnt = np.unique(lst, return_counts=True)
val[cnt == 1]

# [2]
uqzxnwby

uqzxnwby3#

可以使用set循环遍历唯一的元素,并返回仅出现一次的元素:

for ele in set(arr):
    if arr.count(ele) == 1:
        print(ele)
        break
dkqlctbz

dkqlctbz4#

for i in list :
    if list.count(i) == 1 :
        print ("unique", i)
mm5n2pyu

mm5n2pyu5#

def check_window(i,a):
    return all(a[i+d]!=a[i] for d in (-1,1))

l = [1,1,1,1,2,1,1,1,1,]
ls = sorted(l)
ls.append(None)

uniques = [ls[i] for i in range(1,len(ls)-1) if check_window(i, ls)]

相关问题