【问题标题】:Counting elements that appear only one time in a matrix计算矩阵中仅出现一次的元素
【发布时间】:2020-10-25 06:40:17
【问题描述】:

我有一个清单:

l = [['a', []], ['b', []], ['c', []], ['d', ['c']], ['e', ['d']], ['f', []], ['g', ['f', 'a', 'e']], ['h', ['g']]]

我想计算一个元素没有出现在另一个列表中的次数,例如在这个列表中它会是 b 和 h。

这些是唯一在所有列表中只出现一次的元素 ,所以函数会返回 2。

另一个例子:

l2 = [['a', []], ['b', []], ['c', ['b']], ['d', ['c', 'b', 'a']], ['f', ['d']], ['g', ['f', 'a']], ['h', ['f', 'c']], ['i', ['h', 'a']]]

这里有 2 个元素在所有列表中只出现一次:g 和 i

我想使用 python 函数计数,但我真的不知道在这种情况下如何应用它。

【问题讨论】:

  • have = set([i for s in [x[1] for x in l] for i in s]) 然后print([x[0] for x in l if x[0] not in have]) - 作为评论发布,因为我没有发布难以理解的单行字作为答案的习惯,但它确实有效。
  • set(x[0] for x in l) ^ set(y for x in l for y in x[1])
  • @deadshot 我对这个问题的解读(虽然有点模棱两可)是这样的,你可能想要- 而不是^——在这种情况下它没有任何区别。

标签: python list counter


【解决方案1】:

您好,根据您的要求,我创建了一个名为 count(matrix) 的函数,它返回一个 char 数组,该数组在作为参数提供的矩阵中存在一次

def count(matrix):
    result=[]
    removed= []
    for line in matrix:
        if line[0] in result :
            result.remove(line[0])
        elif line[0] not in removed:
            result.append(line[0])
            removed.append(line[0])
        for e in line[1]:
            if e in result :
                result.remove(e)
            
            elif e not in removed:
                result.append(e)
                removed.append(e)
    return result

希望对你有用

【讨论】:

    【解决方案2】:

    n 包含只出现一次的元素

    l = [['a', []], ['b', []], ['c', []], ['d', ['c']], ['e', ['d']], ['f', []], ['g', ['f', 'a', 'e']], ['h', ['g']]]
    m = []
    n = []
    counter = []
    
    for i in l:
        m.append(i[0])
    
        for j in i[1]:
            m.append(j)
    
    m.sort()
    
    for i in m:
        count = 0
        for j in m:
            if i == j:
                count += 1
        counter.append(count)
    
    n = [m[i] for i in range(0,len(m)) if counter[i] == 1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 2011-09-09
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多