这个问题在这里已有答案:
假设我们有一个列表,其中每个项目都有其频率:1,2,3等。然后,从这个列表中,我想获得另一个列表,其中每个项目的频率为1。
例如,原始列表是:
A = [1, 2, 3, 1, 2, 5, 6, 7, 8, 5]
想法是获得另一个列表,例如:
B = [1, 2, 3, 5, 6, 7, 8]
我该怎么做?
这是我在Python中实现的:
for i in range(10):
k = i
item1 = A[k]
for j in range(k):
l = j
item2 = A[l]
if (item1 != item2):
B.append(item1)
break
但我得到:
B = [1, 2, 5]
有人可以帮帮我吗?提前致谢。
您可以使用unique_everseen
删除重复项并保留顺序:
from more_itertools import unique_everseen
A = [1, 2, 3, 1, 2, 5, 6, 7, 8, 5]
B = list(unique_everseen(items))
print(B)
>>> [1, 2, 3, 5, 6, 7, 8]
如果您的计算机上没有安装more_itertools
,可以使用PyPi
安装它:
pip install more-itertools
我不确定是否有内置功能,但我宁愿这样做:
def Remove(duplicate):
final_list = [] # make an empty list
for num in duplicate: # iterate over the given list
if num not in final_list: # if number is not in the list, push it to the list.
final_list.append(num)
return final_list
一个好的方法是使用'set'数据结构。
a = [1, 2, 3, 1, 2, 5, 6, 7, 8, 5]
a_prime=list(set(a))
print (a_prime)
Out:
[1, 2, 3, 5, 6, 7, 8]