title: Should list item type be defined in cython?
body: <p>If I send a python list to a cython function to iterate over, am I suppose to declare what type the list items are? Also what is the best way to loop over a list in cython? For example:</p>
  
  <pre><code>#Cython function, passed a list of float items
  def cython_f(list example_list):
      cdef int i
      for i in range(len(example_list)):
          #Do stuff
          #but list item type not defined?
          pass
  
      #Alternative loop
      cdef j float #declaration of list item type
      for j in example_list:
          #Do stuff
          pass
  </code></pre>
  
  <p>Is any speed gained from trying to define list item type? Is it preferable to pass numpy arrays instead of python lists?</p>