Skip to main content

How to Convert Booleans to Integers in Python and viceversa

In Python, booleans (True and False) are a subtype of integers.

This guide explains how to convert between booleans and integers, and how to apply these conversions to lists and NumPy arrays.

Boolean to Integer Conversion​

Python treats True as 1 and False as 0 in numerical contexts. You can use the int() constructor explicitly, but often it's not even necessary:

bool_t = True
int_1 = int(bool_t) # Explicit conversion
print(int_1) # Output: 1

bool_f = False
int_0 = int(bool_f) # Explicit conversion
print(int_0) # Output: 0

# Often, you can use booleans directly in arithmetic:
print(True + 5) # Output: 6 (True is treated as 1)
print(False * 10) # Output: 0 (False is treated as 0)
  • int(True) returns 1.
  • int(False) returns 0.
  • This behavior is useful in many scenarios and is the recommended approach when working with numerical boolean values.

Integer to Boolean Conversion​

Use the bool() constructor to convert integers to booleans:

result = bool(1)
print(result) # Output: True

result = bool(0)
print(result) # Output: False

result = bool(-5) # Any non-zero integer is True
print(result) # Output: True
  • bool(0) returns False.
  • bool(any other integer) returns True.

Converting Lists of Booleans to Integers​

List comprehensions provide a concise and efficient way to convert a list of booleans:

list_of_booleans = [True, False, False, True]
list_of_integers = [int(item) for item in list_of_booleans]
print(list_of_integers) # Output: [1, 0, 0, 1]

Using map()​

You can use map(), but it's generally less readable than a list comprehension for this simple case:

list_of_booleans = [True, False, False, True]
list_of_integers = list(map(int, list_of_booleans))
print(list_of_integers) # Output: [1, 0, 0, 1]
  • The map function takes the function and an iterable.
  • It applies the function to each element of the iterable.

Converting Lists of Integers to Booleans​

list_of_integers = [1, 0, 1, 0, 1, 1]
list_of_booleans = [bool(item) for item in list_of_integers]
print(list_of_booleans) # Output: [True, False, True, False, True, True]

Using map()​

list_of_integers = [1, 0, 1, 0, 1, 1]

list_of_booleans = list(map(bool, list_of_integers))
print(list_of_booleans) # Output: [True, False, True, False, True, True]

Converting NumPy Arrays​

If you're working with NumPy arrays, you can use the .astype() method for efficient conversions:

import numpy as np

arr = np.array([True, False, False, True], dtype=bool)
int_arr = arr.astype(int) # Convert boolean array to integer array
print(int_arr) # Output: [1 0 0 1]

# And vice versa
arr = np.array([1,0,1,1], dtype=int)
bool_arr = arr.astype(bool) # Convert an integer array to a boolean array.
print(bool_arr) # Output: [ True False True True]
  • arr.astype(int): Converts a boolean NumPy array to an integer array (True becomes 1, False becomes 0). This is very efficient.
  • arr.astype(bool): Converts an integer NumPy array to an boolean array (0 becomes False, non-zero becomes True).

Converting 'true'/'false' Strings to Integers​

If you need to convert a string to an integer based on whether it is equal to 'true' or 'false':

str_t = 'true'
int_1 = int(str_t.lower() == 'true')
print(int_1) # Output: 1
print(type(int_1)) # Output: <class 'int'>
str_f = 'false'
int_0 = int(str_f.lower() == 'true')
print(int_0) # Output: 0
print(type(int_0)) # Output: <class 'int'>
  • The str is converted to lower case to ensure that case does not affect the comparison.
  • The == operator compares the lower case string to 'true' and returns the corresponding boolean value.
  • int() casts the resulting boolean to 1 or 0.