将列表转换为列表,每个项目具有多重性1 [重复]

问题描述 投票:-4回答:3

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

有人可以帮帮我吗?提前致谢。

python frequency
3个回答
0
投票

您可以使用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

0
投票

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

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

0
投票

一个好的方法是使用'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]
© www.soinside.com 2019 - 2024. All rights reserved.