我有一些名为find
的列表。我想知道这些find
是否是full_list
的一部分。列表find 1-4
是full_list
的一部分,而列表find 5-7
不是。
下面的示例返回"Yes"
。
find1 = [[1, 1]]
find2 = [[1, 1], [2, 2]]
find3 = [[1, 1], [3, 3]]
find4 = [[4, 4], [2, 2], [3, 3]]
find5 = [[1, 0]]
find6 = [[1, 1], [2, 0]]
find7 = [[1, 1], [3, 0]]
full_list = [[1, 1], [2, 2], [3, 3], [4, 4]]
if find2[0] in full_list and find2[1] in full_list:
print("Yes")
else:
print("No")
由于len(find2) != len(find4)
,当前的if
语句非常笨拙,几乎没有用。
如何以更通用的方式进行这项工作?
答案 0 :(得分:3)
您可以将all()
与生成器一起使用,如果一切都是真实的,则生成器将返回True
或False
:
if all(x in full_list for x in find2):
print("Yes")
else:
print("No")
# => prints Yes
这是一个通用名称,只需将find2
更改为您需要使用full_list
检查的任何列表。
答案 1 :(得分:1)
尝试一下:
set1 = set(find1)
full_set = set(full_list)
if set1.issubset(full_set):
print("Yes")
else:
print("No")
答案 2 :(得分:1)
您可以设置一个功能来处理所有这些功能,所有提到的方法都将起作用,仅显示其他选项,您可以使用filter
并比较lens
以及
def is_in_full(k):
l = list(filter(lambda x: x in k, full_list))
if len(l) == len(k):
return 'Yes'
else:
return 'No'
print(is_in_full(find1))
# Yes