问题描述
我正在尝试实现一个用于练习目的的函数,以便仅计算列表中的不同元素。 我正在实施的代码是:
def distinct_elements(a):
a.sort()
b = []
i = 0
for i in range(0,len(a)-1):
if a[i] == a[i+1]:
i+1
else:
b.append(a[i+1])
i+1
return b
实际上,它有效,我得到了列表中的不同元素。事情是关于主数组 a
中的第一个元素,它在循环后不存在于数组 b
中。
结果:
a = get_random_array(10)
print("Orginal array",sorted(a))
print("result",distinct(a))
Orginal array [3,15,24,25,29,37,38,41,42,49]
result [15,49]
如您所见,a
上的第一个元素丢失了。
为了获得正确的结果,我应该更改代码中的哪些内容?
另外,有没有办法不以算法到位的方式创建新列表?还有,有没有可能让它更快?
解决方法
Numpy 有一个内置函数:
import numpy as np
np.unique(yourlist)