【发布时间】: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 我对这个问题的解读(虽然有点模棱两可)是这样的,你可能想要
-而不是^——在这种情况下它没有任何区别。