Is there a more pythonic way to convert a list of booleans to an integer?

convert boolean to int python pandas
convert boolean list to int python
how to convert boolean to int python
code to convert the number 1 to a boolean in python
python convert boolean to bit
how to convert boolean to 1 and 0 in python
python bool to 1
python convert to boolean array

I feel silly having to ask this question, but my memory evades me of better alternatives. Two appraoches that spring to mind:

First:

def f1(v):
    return sum(2**i for i,va in enumerate(v) if va)

>>> f1([True, False, True])
5

Second:

def f2(v):
    return int('0b' + "".join(str(int(va)) for va in v),2)

>>> f2([True, False, True])
5

I feel that f1 is almost to clunky to be pythonic, and f2 is plainly too ugly as I'm jumping between multiple datatypes. Maybe its my age...?

Using a left shift is slightly faster than raising to powers (at least on my machine). Using a bitwise operation encourages the reader of the code to think in terms of binary data.

>>> sum(v << i for i, v in enumerate([True, False, True]))
5

How to convert a boolean array to an int array, If you are asking for a way to convert Python lists from Boolean to int, you can use map to do it: >>> testList = [False, False, True, True]� Most Values are True. Almost any value is evaluated to True if it has some sort of content.. Any string is True, except empty strings.. Any number is True, except 0.. Any list, tuple, set, and dictionary are True, except empty ones.

Using booleans in arithmetic operations (also lambda functions) is very pythonic:

lst = [True, False, True]

func = lambda x: sum(2 ** num * i for num, i in enumerate(x))

print(func(lst))
# 5

Python, Given a boolean value(s), write a Python program to convert them into an integer value or list respectively. Given below are a few methods to solve the above� Pandas provides a handy way of removing unwanted columns or rows from a DataFrame with the drop() function. Let’s look at a simple example where we drop a number of columns from a DataFrame . First, let’s create a DataFrame out of the CSV file ‘BL-Flickr-Images-Book.csv’.

Just for contrast here's a way that you would do this if you were writing python as if you were writing something like c.

def f(l):
  output = 0
  for i in range(len(l)):
    output |= l[i] << i
  return output

9. Notes about booleans and logical operators — Python Notes , Python provides the boolean type that can be either set to False or True. See the Classes to see how to refedine the comparison operator of a type. 10 == 10 10 See Examples for more details. The left and right shifts can divide or multiply by power of 2 easily (integer conversion is made): tuple, list, dictionnary, string. What are Boolean? Boolean values are the two constant objects False and True. They are used to represent truth values (other values can also be considered false or true). In numeric contexts (for example, when used as the argument to an arithmetic operator), they behave like the integers 0 and 1, respectively. The built-in function […]

This is another hacky way I came up with:

def f1(v):
    return int(''.join(str(int(b)) for b in v), 2)

Example:

>>> def f1(v):
...     return int(''.join(str(int(b)) for b in v), 2)
...
>>> f1([True, False, True])
5
>>>

Another identical example using map (more readable in my view):

def f1(v):
    return int(''.join(map(str, map(int, v))), 2)

How to convert a list of booleans to ints in Python, How to convert a list of booleans to ints in Python. Converting a list of booleans to ints converts each boolean in the list into an integer. True converts to 1 , and� This article describes the difference between list comprehensions and generator expressions; provides simple examples from basic to complex concepts

Its little more rigid solution but its very computationally efficient

>>> import numpy as np

>>> predefined_bytes = 2**(np.arange(32))
>>> predefined_bytes
array([         1,          2,          4,          8,         16,
               32,         64,        128,        256,        512,
             1024,       2048,       4096,       8192,      16384,
            32768,      65536,     131072,     262144,     524288,
          1048576,    2097152,    4194304,    8388608,   16777216,
         33554432,   67108864,  134217728,  268435456,  536870912,
       1073741824, 2147483648])


def binary2decimal(bits,predefined_bytes):
    bits = np.array(bits)
    return np.sum(bits*predefined_bytes[:bits.shape[0]])

>>> binary2decimal([1,1,1,1,1,1,1,1],predefined_bytes)
255

5. Conditionals — How to Think Like a Computer Scientist: Learning , In Python, the two Boolean values are True and False (the capitalization must be exactly There are three logical operators, and, or, and not, that allow us to build more A truth table is a small table that allows us to list all the possible inputs, and to int can also convert floating-point values to integers, but remember that it� There needs to be some way to say “If <expr> is true, do all of the following things.” The usual approach taken by most programming languages is to define a syntactic device that groups multiple statements into one compound statement or block .

Boolean data type, In computer science, the Boolean data type is a data type that has one of two possible values It is a special case of a more general logical data type (see probabilistic Common Lisp uses an empty list for false, and any other value for true. In contrast, converting between Boolean s and integers (or any other types) still� There's duplication between test_not_array and test_array that could easily be removed. There are no test cases checking that Booleans are numeric, or that objects are not. 3. Revised code import numpy as np # Boolean, unsigned integer, signed integer, float, complex.

4. Built-in Types — Python 3.4.10 documentation, (Important exception: the Boolean operations or and and always return one of their operands.) There are three distinct numeric types: integers, floating point numbers, and Since Python's floats are stored internally as binary numbers, converting a Class method to return the float represented by a hexadecimal string s. (Be aware that there is a proposal to add a native integer NA to Pandas in the future; as of this writing, it has not been included). While this type of magic may feel a bit hackish compared to the more unified approach to NA values in domain-specific languages like R, the Pandas sentinel/casting approach works quite well in practice and in my

2. Built-in Functions — Python 3.3.7 documentation, If x is not a Python int object, it has to define an __index__() method that returns an integer Convert a value to a Boolean, using the standard truth testing procedure. The bytearray type is a mutable sequence of integers in the range 0 <= x < 256 For more information on class methods, consult the documentation on the� There are a few arguments you can pass to load_workbook() that change the way a spreadsheet is loaded. The most important ones are the following two Booleans: read_only loads a spreadsheet in read-only mode allowing you to open very large Excel files. data_only ignores loading formulas and instead loads only the resulting values.

Comments
  • Is there a reason you need the sum of the indices? Why can't you just do sum(list_of_bools) which in this case would equal 2
  • @PyPingu They aren’t calculating the sum of the indices. They are interpreting the bools as a binary number where the first element is the ones, the second the twos place, the third the fours place and so on.
  • I get that there is actually more to it than simply summing the indices, but the question says "convert a list of bools to an integer" so I wondered if there was actually some reason that the straightforward sum wasn't what was required. FWIW I don't really see that f1 is a bad solution if that's the desired result.