我该怎么做?
A = ['fish', 'banana', 'old pajamas', 'Mutton', 'Beef', 'Trout']
B = ['fish', 'banana', 'old pajamas']
B in A = True
A in B = False
我尝试了'in'比较器,但它在两种情况下都返回False,因为它检查List B是否在List A中,而不是A中的B项。
除了使用像这样的非常长的if语句之外,还有一种简单的方法吗?
if B[0] == A[0] and B[1] == A[1] and B[2] == A[2]:
return True
else: return False
答案 0 :(得分:5)
In [8]: all(a==b for a,b in zip(A,B))
Out[8]: True
相当于
if B[0] == A[0] and B[1] == A[1] and B[2] == A[2]:
return True
else: return False
,因为当A
或B
中较短的元素不再有zip
时,issubset
method会终止:
In [9]: zip(A, B)
Out[9]: [('fish', 'fish'), ('banana', 'banana'), ('old pajamas', 'old pajamas')]
另一方面,如果您希望测试A
的所有元素是否都在B
中,那么您正在寻找子集关系。如果您将A
和B
转换为集合,则可以使用其<=
运算符:
In [12]: set(B) <= set(A)
Out[12]: True
因为B
是A
的一个子集。
In [13]: set(A) <= set(B)
Out[13]: False
因为A
不是B
的子集。
编辑:正如AVER winiचhaudhary所指出的那样,集合也有{{3}}:
In [42]: set(B).issubset(A)
Out[42]: True
In [43]: set(A).issubset(B)
Out[43]: False