如何比较列表元素与嵌套列表?
a = [[1, 3, 4],[1, 7, 9]]]
b = [1, 7, 0, 9]
假设我有一个嵌套的列表a,我想把列表b和这个嵌套的列表a
进行比较,然后返回True。如果b
里有3个项目和a
中的某个列表匹配,那就返回True。我该怎么做呢?
这个问题是要创建一个井字棋游戏。列表a包含所有的获胜组合,而列表b则是玩家的输入。如果输入包含1、7和9(就像在列表b中那样),那么这个组合就是获胜组合的一部分(在列表a中)。不过,玩家的输入可能会包含超过3个数字,而且顺序也不一定和列表a中的组合一致。
我试过下面的代码:
a = [[1, 3, 4],[1,7,9]]
b = [1, 7, 0, 9]
set(a).issubset(b)
但显然这并没有成功。
4 个回答
1
你想要检查在 a
中的每一个列表,看看它们是否都是 b
的一部分。如果有任何一个列表符合这个条件,结果就是真:
a = [[1, 3, 4], [1, 7, 9]]
b = [1, 7, 0, 9]
b = set(b)
print(any(set(i) <= b for i in a))
1
根据你尝试过的内容,我觉得你想要做的是:
a = [[1, 3, 4],[1,7,9]]
b = [1, 7, 0, 9]
for item in a:
if set(item).issubset(b):
print(item, 'is subset of', b)
或者一般来说,如果你想检查一下 a
中的任何一个项目是否是 b
的子集,可以这样做:
any(set(item).issubset(b) for item in a)
2