Though it should be added that what most languages call "arrays" aren't, strictly speaking, arrays, as in the primitive data structure, and are actually lists.
Terminology can be confusing. This is what we get for trying to mangle synonyms into new shapes instead of coming up with new words.
except Python's lists can store objects of different types in the same list.
Strictly speaking, this is the exact opposite of true. Most languages allow arrays to hold different types, while there's only one type that can be stored in a python array, ever. It just so happens that that type is a reference. But it does clarify what the actual difference is - a Python "list" is an array of "reference types" - labels, pointers, whatever you want to call them. Essentially, it's a list of where to find the objects you want. In other languages, you can create arrays of other types, but Python doesn't let you, because there's not really any reason to do so with Python.
Although, actually... most languages might handle arrays that way now. But at some point they use to actually contain the objects instead of just referencing them, I'm pretty sure.
You know what I don't even know.
In regard to your text that you struck out, it depends on the language, mostly. I'm referring to the big 3 programming (as opposed to scripting) languages: C, C++, and Java. All 3 languages have arrays that use copy constructing for storing primitives. For example, if you created an int with a value of 1, created an int array with that int as the first value, and incremented the first value of the array, the original int will still have a value of 1. So, the arrays do not directly contain the primitive - they instead contain a copy of the primitive. For C and C++, the same thing happens with objects, but not with Java, which does copying by reference for objects. If you modify a Java object in an array, the original object will also be modified. While C and C++ arrays create new objects, Java arrays store references to the objects.
Now for the type thing. C and C++ do not have a type that can act as a universal type (void* does not count), so arrays in those languages can only contain the type they are created with (plus any subtypes). Java arrays act the same way, except Java has the Object class, which is the superclass to every class without an explicit superclass. So, an Object array can only hold Objects by definition, but because every object is an Object, in practice, the array can hold any object.
Python does duck typing, so as long as an object supports being put in a list (and I don't know any way to make an object not support that, since it would require making an object unable to be referenced), it can be put in a list.
Is there an easy way (without creating another string) to return a backward slice of a string? I tried doing the following but that just returned an empty string.
>>> s = 'hello'
>>> s[3:2]
''
>>> s = 'hello'
>>> s = s[::-1]
>>> print s
'olleh'
I just got sniped.