title: How do I represent and work with n-bit vectors in Python?
body: <p>In an assignment I am currently working on we need to work with bit vectors, but I am very unsure of how to do this in Python. They should be able to be from 4 bits to 20 bits. I have never worked with bit vector before, but I guess that one would one create arrays of unsigned bytes that you manipulated using the usual AND/OR/XOR operations. </p>
  
  <p>The <strong>important restriction</strong> here is: I cannot rely on <em>any</em> libraries other than those supplied with standard Python.</p>
  
  <p>I think I know how I would do this in C using arrays of 8 bit unsigned bytes: 
  e.g. to turn the 18th bit of a zeroed array into a one, I would do something like 
  my_bit_array[3] &amp;= 1&lt;&lt;2</p>
  
  <p>But since Python is dynamically typed and does not have a built-in array type, how would I go about doing this in a pythonic way?</p>
  
  <p>And is it possible (how?) to express a bit vector of size 20? I am thinking of perhaps making a 24 bit / 3 byte vector and ignoring the 4 bits. </p>