Python-New To Python和一般编程 - 两组的差异

时间:2014-12-11 04:42:48

标签: python python-3.3

两个集合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

2 个答案:

答案 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}