如何查看元素是否在我的列表中

时间:2018-01-30 05:12:24

标签: python python-3.x

我试图找出是否有办法查看一个列表中有多少对象(计数)在另一个列表中。

我有一张卡片。

class Card(object):
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == other.number

    def getNumber(self, card):
        return card.number

我有一个包含卡列表的类Deck。

class Deck(object):
    def __init__(self):
        self.cards = []
        for i in range(11):
            for j in range(i):
                self.cards.append(Card(i))

我想知道我是否可以在甲板上获得卡的数量。

deck = Deck()
The deck contains 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 

cards = [Card(6), Card(5), Card(3)]
The cards are 6 5 3

我想知道牌组中有多少6,5和3。

3 个答案:

答案 0 :(得分:2)

要计算单张卡片,请使用list.count()

for card in cards:
    print(deck.cards.count(card))

要计算所有内容,请使用collections.Counter()

>>> from collections import Counter
>>> Counter(deck.cards)
Counter({Card(10): 10, Card(9): 9, Card(8): 8, Card(7): 7,
         Card(6): 6, Card(5): 5, Card(4): 4, Card(3): 3,
         Card(2): 2, Card(1): 1})

要使计数器正常工作,您需要通过添加 __ hash __() __ repr __() Card 类进行少量修改>方法:

class Card(object):
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == other.number

    def __hash__(self):
        return hash(self.number)

    def getNumber(self, card):
        return card.number

    def __repr__(self):
        return 'Card(%r)' % self.number

答案 1 :(得分:0)

您可以尝试:

print "Count for 6's: ", ListName.count(6)

同样适用于5和3:

print "Count for 5's: ", ListName.count(5)
print "Count for 3's: ", ListName.count(3)

答案 2 :(得分:0)

我认为你可以这样试试

>>> from collections import Counter
>>> deck1
['1', '2', '2', '3', '3', '3', '4', '4', '4', '4', '5', '5', '5', '5', '5', 
'6', '6', '6', '6', '6', '6', '7', '7', '7', '7', '7', '7', '7', '8', '8', 
'8', '8', '8', '8', '8', '8', '9', '9', '9', '9', '9', '9', '9', '9', '9', 
'10', '10', '10', '10', '10', '10', '10', '10', '10', '10']
>>> Counter(deck1)
Counter({'10': 10, '9': 9, '8': 8, '7': 7, '6': 6, '5': 5, '4': 4, '3': 3, 
'2': 2, '1': 1})