两个集合A和B的差异,表示为\或A - B是A中不在B中的元素集合。当A - B中存在元素时,返回True。我知道它不正确,但这是我试过的
def hasNonemptyDiff(A,B):
foundExampleYet = False
for a in A:
if(A in B):
foundExampleYet = True
return foundExampleYet
答案 0 :(得分:3)
你非常接近!
def hasNonemptyDiff(A,B):
foundExampleYet = False
for a in A:
if(a in B): # here's the change
foundExampleYet = True
return foundExampleYet
想要要做的是检查该项目在B中的每件商品。 的含义是,对于每件商品,检查是否整个清单A在B中。这不是你的意思!比A,B,a和b更有用的变量名将有助于避免将来出现此问题。
设置的东西可能不是谈论这个问题最清楚的方式(你不是通过使用套装来解决它,是吗?)。只要询问“A中是否有任何物品不在B中”,这是非常简单的
最简单的方法
根据您的输入,更简单的方法是
return A == B
最有趣的方式
或者,如果您需要按元素比较,
return all( [a==b for a,b in zip(A,B)] )
最后一个使用zip函数来配对集合,使用“all”函数来检查数组中的每个元素是否为True,并使用list comprehension来压缩for循环
zip函数https://docs.python.org/2/library/functions.html#zip
全部功能https://docs.python.org/2/library/functions.html#all
列表理解https://docs.python.org/2/tutorial/datastructures.html
Python有很多很好的工具可以解决这些问题,你会在学习的过程中发现这些问题!
答案 1 :(得分:0)
如果您正在处理Python集,则可以更简单的方式执行此操作。在Python shell上试一试:
>>> a = {1,2,3}
>>> b = {2,3}
>>> c = a-b
>>> c
{1}