[Tutor] Explanation of Lists data Type
noufal at nibrahim.net.in
Wed Apr 12 11:43:11 CEST 2006
On Wed, April 12, 2006 2:42 pm, Kaushal Shriyan wrote:
>>>> list[:] --> Does this mean its list[0:0]
> ['a', 'b', 'c', 'd', 'e', 'f'] ----> I didnot understood this
I remember you once asked another question related to sequence slices and
I mentioned the effects of slicing with no indices. You sure you're
reading the replies? ;)
When you leave an index in the slice argument, it will assume that you
meant the maximum (or minimum as the case may be) possible.
>>> foo = ['a','b','c','d','e']
>>> foo #Element at index 2
>>> foo[2:] #Elements from index two till the end
['c', 'd', 'e']
>>> foo[:2] #Elements from the beginning till index 2.
Now, when you give a [:] to the slice operator, you get a copy of the
original list. This is shown below
>>> bar = foo[:] #bar contains a copy of foo
>>> baz = foo #baz is an alias for foo (not a copy)
>>> baz is foo #Are baz and foo the same?
True #Yes they are
>>> bar is foo #Are bar and foo the same?
False #No they're not. It's a copy remember?
>>> bar="test" #Change element at index 2 of bar to "test"
>>> bar # Print it
['a', 'b', 'test', 'd', 'e'] # It's changed
>>> foo # Has foo changed as well?
['a', 'b', 'c', 'd', 'e'] # Nope. Because bar is a copy of foo.
>>> baz="test" # Now we change element at index 2 of baz.
>>> baz # Has baz changed?
['a', 'b', 'test', 'd', 'e'] # Of course. :)
>>> foo # Has foo changed?
['a', 'b', 'test', 'd', 'e'] # Yes. Since baz was an alias of foo.
I trust this clears things up.
Also, try not to use "list" as a variable name since it's a builtin.
More information about the Tutor