首页 > 解决方案 > 计算没有集合的列表中的唯一元素

问题描述

我目前正在尝试制作一个程序来计算和打印列表中唯一元素的数量。

我的代码:

def solution(N, A):
    yee = 1   

    for i in range(1, len(A)):
        j = 0
        for j in range(i):
            if(A[i] == A[j]):
                yee-=1
        if(i==j+1):
            yee +=1

    print(yee)


N = int(input())
A = []
n = 0
for e in input().split():
    if(n<N):
        A.append(int(e))
        n+=1

solution(N, A)

使用包含 (1 2 3 1 4 2 5 6 7 8) 的列表,输出应该是 6。但是,我的程序返回 8。我相信这是由于程序计算了 1 和 2,即使它们是在技​​术上不是唯一的问题。我确信它很容易修复,但我似乎无法弄清楚。任何帮助将不胜感激!!

标签: pythonarrays

解决方案


获得 6 输出的唯一方法(1, 2, 3, 1, 4, 2, 5, 6, 7, 8)是,如果您想计算仅出现一次的元素数量,而不是唯一元素的数量(有 8 个元素,其中两个重复多次) .

您可以在单行中执行此操作:

def num_single_elements(A):
    return len(list(e for e in A if A.count(e) == 1))

推荐阅读