Counting 2d lists in python

How can I count the number of items that fall into this 2d list?

grid = [['hit','miss','miss','hit','miss'],
     ['miss','miss','hit','hit','miss'],
     ['miss','miss','miss','hit','hit'],
     ['miss','miss','miss','hit','miss'],
     ['hit','miss','miss','miss','miss']]

battleships = 0
for i in grid:
    if i == "hit":
    battleships = battleships + 1
print battleships

I know that the code is wrong, but it gives an idea of ​​what I want to do. I hope that

thank

+3
source share
3 answers

Use list.count:

>>> ['hit','miss','miss','hit','miss'].count('hit')
2

>>> grid = [['hit','miss','miss','hit','miss'],
...      ['miss','miss','hit','hit','miss'],
...      ['miss','miss','miss','hit','hit'],
...      ['miss','miss','miss','hit','miss'],
...      ['hit','miss','miss','miss','miss']]
>>> [row.count('hit') for row in grid]
[2, 2, 2, 1, 1]

And sum:

>>> sum(row.count('hit') for row in grid)
8
+11
source

If I had code that used 2D lists quite a bit, I would make a generator that returns every element in a 2D list:

def all_elements_2d(l):
    for sublist in l:
        for element in sublist:
            yield element

And then you can do other things with it, for example, read all the lines of "hit":

hits = sum(element == 'hit' for element in all_elements_2d(grid))
0
source
Transaction=[['Mango','Onion','Jar','Key-chain','Eggs','Chocolates'],
['Nuts','Onion','Jar','Key-chain','Eggs','Chocolates'],
['Mango','Apple','Key-chain','Eggs'],
['Mango','Toothbrush','corn','Key-chain','Chocolates'],
['corn','Onion','Key-chain','Knife','Chocolates']
]
count1=[['Mango',0],['Onion',0],['Jar',0],['Key-chain',0],['Eggs',0],
['Chocolates',0],['Nuts',0],['Apple',0],['Toothbrush',0],['corn',0],['Knife',0]]
for j in range(0,10):
 x=0
for i in range(0,5):
 x=x+Transaction[i].count(count1[j][0]);
count1[j][1]=x
print count1
0
source

All Articles