如何检查列表是否仅包含某个项目

时间:2016-03-24 15:27:20

标签: python list

我有一个名为bag的列表。我希望能够检查是否只有特定项目。

bag = ["drink"]
if only "drink" in bag:
    print 'There is only a drink in the bag'
else:
    print 'There is something else other than a drink in the bag'

当然,我只把'在那里的代码中,这是错误的。有没有简单的替代品?我试过几个相似的词。

3 个答案:

答案 0 :(得分:7)

使用内置all()功能。

if bag and all(elem == "drink" for elem in bag):
    print("Only 'drink' is in the bag")

all()功能如下:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

因此,空列表将返回True。由于没有元素,它将完全跳过循环并返回True。因为是这种情况,您必须添加明确的and len(bag)and bag,以确保行李不为空(()[]是假的)。

此外,您可以使用set

if set(bag) == {['drink']}:
    print("Only 'drink' is in the bag")

或者,类似地:

if len(set(bag)) == 1 and 'drink' in bag:
    print("Only 'drink' is in the bag")

所有这些都适用于列表中的0个或更多元素。

答案 1 :(得分:1)

您可以使用仅包含此项目的列表直接检查是否相等:

if bag == ["drink"]:
    print 'There is only a drink in the bag'
else:
    print 'There is something else other than a drink in the bag'

或者,如果您要检查列表是否包含同一项"drink"的任何大于零的数字,您可以对它们进行计数并与列表长度进行比较:

if bag.count("drink") == len(bag) > 0:
    print 'There are only drinks in the bag'
else:
    print 'There is something else other than a drink in the bag'

答案 2 :(得分:0)

您可以查看列表的长度

if len(bag) == 1 and "drink" in bag:
    #do your operation.