I was wondering if each would be good if the list had various data types
If your list contains multiple, non-polymorphic datatypes, then you are doing something evil (or spent too much time in LISP).
Edit: just to clarify, a list containing multiple, non-polymorphic datatypes is almost impossible to operate on idiomatically. You are forced to either know the exact type and order of each element ahead of time (in which case a tuple would be more appropriate), or fallback to a chain of if insinstance(a, Foo): else: statements, which is just bad software design.
Certainly not. python can work on different types just like some kind of type erasure system. they are not polymorphic but some operations can apply to a whole variety of types. This is the same than working against the highest interface in OOP. In python you can do it too without any contracts.
take a look at that : http://lucumr.pocoo.org/2011/7/9/python-and-pola/
There is not even a mention of classes and inheritance and yet python can accept code that is even more powerful than multiple inheritance, because you can work against "operators" (c.f `len` example in the link). If you keep that in mind as a discipline when writing functions, you open your possible accepted types to a larger variety.