【发布时间】:2020-10-16 22:36:52
【问题描述】:
我有以下数据集:
D=[[A,B,D,E],[B,C,E],[A,B,D,E],[A,B,C,E],[A,B,C,D,E],[B,C,D]]
而且我需要找到一种方法,仅当另一个元素 Y(即 sup_X¬Y)没有出现时,才能获取元素 X 在列表中出现的次数。
例如,sup_E¬C,表示E 出现在列表中而C 没有出现的次数。在这种情况下,这个条件在D[0]和D[2]这两个位置上都满足,所以答案应该是2。
在另一个示例中,sup_E¬AD 表示E 出现在列表中而A 和D 没有出现的次数。这个条件在D[1]位置满足,所以答案应该是1
我有这段代码可以让我找到元素 X 出现的次数,
sup_X=(sum(1 for x in D if set(X) <= set(x) ))
例如,元素 ['A','B'] 在数据集中出现 4 次,在 D[0],D[2],D[3],D[4]
并尝试在哪里应用相同的逻辑,但我无法做到
【问题讨论】:
-
你能测试我提供的单线吗?另外,我相信这里有一个错字:“在另一个例子中,sup_E¬AD 表示 E 出现在列表中的次数,而
A和B没有出现。”我想你的意思是说:“......其中A和D没有出现。”我正在编辑,但如果我不正确,请随时回滚。 -
我也将标题改为
Return how many times ALL elements in list X appear in the sublists of a list of lists D only if ALL elements in another list Y do not appear,以更好地反映问题。请记住,列表的长度可以为 1,即包含一个字符串,但我认为如果 X 和 Y 都可能包含多个元素,我认为您需要标准化为列表而不是列表与字符串。跨度>
标签: python python-3.x list python-2.7 variables