Python 将一个列表转换为一个列表,其中每个项目的多重性为1

Python 将一个列表转换为一个列表,其中每个项目的多重性为1,python,frequency,Python,Frequency,假设我们有一个列表,其中每个项目都有其频率: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):

假设我们有一个列表,其中每个项目都有其频率: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]

有人能帮我吗?提前感谢。

我不确定是否有用于此的内置功能,但我宁愿这样做:

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
您可以使用以删除重复项并保留顺序:

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]
如果您的计算机上没有安装更多的itertools,您可以使用以下方式安装:


一个很好的方法是使用“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]

所以删除所有从右边开始删除的重复项?只需使用listsetAThis这个问题是重复的,如上所述。
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]