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)
但显然它不起作用。
如果你想检查
a
的子列表的所有内容是否都在b
中,你可以使用set
并检查差异。
compare = [[1, 3, 4],[1, 7, 9]]
moves = [1, 7, 0, 9]
def check(a:list[list], b:list) -> bool:
y = set(b) # reformat `b` to set
# loop over sublists of `a` as sets
for x in map(set, a):
# remove all of the duplicate values of `b` from `a`
if not (x - y):
# if there is nothing left, return True
return True
return False
print(check(compare, moves))
通常,如果您能够提供有关您的逻辑的更多详细信息,那就更好了。但是,如果我正确理解您的问题,您可以通过迭代
a
中的每个子列表并检查该子列表的所有元素是否都存在于 b
中来实现它。如果任何子集满足条件,则返回 True
。
a = [[1, 3, 4],[1, 7, 9]]
b = [1, 7, 0, 9]
def check_winning_combinations(a, b):
for sublist in a:
if all(elem in b for elem in sublist):
return True
return False
result = check_winning_combinations(a, b)
print(result) # Output: True