Python List count() Method

list.count() tells you how many times one value appears in a list.

It is a useful method when you want to:

  • count one specific item
  • check whether a value appears more than once
  • quickly see how many matches exist

It returns a number and does not change the original list.

Quick answer #

numbers = [1, 2, 2, 3, 2]
result = numbers.count(2)
print(result)  # 3

Use list.count(value) to count how many times one value appears in a list.

What list.count() does #

list.count():

  • counts how many times a given value appears in a list
  • returns an integer
  • does not change the original list
  • checks for exact matches

This means Python looks through the whole list and compares each item to the value you gave it.

If the value appears 3 times, the method returns 3.

If it does not appear at all, the method returns 0.

Basic syntax #

The syntax is:

my_list.count(value)
  • my_list is the list you want to search
  • value is the item you want to count

Example:

letters = ["a", "b", "a", "c"]
print(letters.count("a"))

Output:

2

Python checks the whole list. If the value is not found, it returns 0.

What the return value means #

The return value from count() is always an int.

Possible results:

  • 0 if the value does not exist in the list
  • 1 if it appears once
  • 2 or more if it appears multiple times

Example:

colors = ["red", "blue", "green", "blue"]

print(colors.count("blue"))   # 2
print(colors.count("red"))    # 1
print(colors.count("yellow")) # 0

If you only want to know whether a value exists, count() works, but using in is often simpler. See how to check if a value exists in a list in Python.

How matching works #

list.count() uses equality matching.

That means Python checks whether each item is equal to the value you passed in.

Important details:

  • matches are based on equality
  • strings are case-sensitive
  • 1 and True may compare as equal in Python
  • nested lists can be counted if the entire nested list matches

Strings are case-sensitive #

words = ["apple", "Apple", "apple"]
print(words.count("apple"))  # 2
print(words.count("Apple"))  # 1

"apple" and "Apple" are different strings.

1 and True can match #

values = [1, True, 2, 1]
print(values.count(1))     # 3
print(values.count(True))  # 3

This surprises many beginners.

In Python:

  • True == 1
  • False == 0

So count() may include both booleans and integers when they compare as equal.

Nested lists must match exactly #

items = [[1, 2], [3, 4], [1, 2], [1]]
print(items.count([1, 2]))  # 2

Python counts only exact matches of the full nested list.

Beginner examples to include #

Count a number in a list of numbers #

numbers = [10, 20, 10, 30, 10]
result = numbers.count(10)

print(result)

Output:

3

Count a word in a list of strings #

words = ["cat", "dog", "cat", "bird"]
result = words.count("cat")

print(result)

Output:

2

Count a value that is not in the list #

numbers = [1, 2, 3, 4]
result = numbers.count(5)

print(result)

Output:

0

Count repeated nested list values #

data = [[1, 2], [1, 2], [2, 3], [1, 2]]
result = data.count([1, 2])

print(result)

Output:

3

When to use count() #

Use count() when you need the number of appearances of one value.

Good use cases:

  • counting one specific item
  • checking whether a list contains duplicates of a value
  • doing a quick count before making a decision

Example:

votes = ["yes", "no", "yes", "yes"]
yes_votes = votes.count("yes")

print(yes_votes)

count() is not the best choice if you need counts for many different values. In that case, you would usually use a loop or another tool.

If you are still learning list basics, see Python lists explained for beginners and what is a list in Python.

Common mistakes #

Here are some common beginner mistakes with list.count().

Trying to count part of a string instead of list items #

list.count() counts list items, not parts of a string.

words = ["apple pie", "banana", "apple pie"]
print(words.count("apple"))  # 0

Why 0?

Because "apple" is not a full item in the list. The list contains "apple pie".

If your data is a string instead of a list, you may be thinking of str.count().

Expecting count() to return True or False #

count() returns a number, not a boolean.

numbers = [1, 2, 2, 3]
print(numbers.count(2))  # 2

If you want a true/false answer, use:

print(2 in numbers)  # True

Forgetting that string matching is case-sensitive #

names = ["Sam", "sam", "SAM"]
print(names.count("sam"))  # 1

Only the exact string "sam" matches.

Calling count() on the wrong type #

If you are not sure what your variable contains, inspect it first:

print(my_list)
print(type(my_list))
print(my_list.count(value))
print(value in my_list)
for item in my_list:
    print(repr(item))

These checks can help you see:

  • whether the variable is really a list
  • whether the values are exactly what you expect
  • whether spacing, capitalization, or data type differences are causing problems

Common causes of confusion include:

  • using count() when the data is a string, not a list
  • expecting substring behavior instead of exact list-item matching
  • confusing list.count() with string count()
  • being surprised that booleans and integers can compare as equal

FAQ #

Does list.count() change the list? #

No. It only returns how many times a value appears.

What happens if the value is not in the list? #

The method returns 0.

Can list.count() count multiple different values at once? #

No. It counts one value per call.

Is list.count() case-sensitive for strings? #

Yes. "Apple" and "apple" are different values.

Why does True sometimes count like 1? #

In Python, True compares equal to 1 and False compares equal to 0.

See also #

Press Esc to close