s.index(x[, i[, j]]) will change the s ?
technic.tec at gmail.com
Thu Sep 10 07:47:14 CEST 2009
> Thanks for your reply! Sorry for my poor english!
> On Sep 10, 12:33 pm, Chris Rebert <c... at rebertia.com> wrote:
>> On Wed, Sep 9, 2009 at 9:00 PM, s7v7nislands<s7v7nisla... at gmail.com> wrote:
>>> hi all:
>>> what is the s.index() mean? does the index() change the s?
>> It tells you the index of the first instance of the given element in
>> the sequence. Or, to quote the docs:
>> s.index(x[, i[, j]]) --- return smallest k such that s[k] == x and
>> i <= k < j
>> No, .index() does not modify the sequence itself.
> I known index() does not modify the sequence itself. my question is so
> why the doc put the index() method in the mutable sequence types list?
It applies to both mutable and immutable sequence.
>>> In python2.6 doc (6.6.4. Mutable Sequence Types), Note 4:
>>> Raises ValueError when x is not found in s. When a negative index is
>>> passed as the second or third parameter to the index() method, the
>>> list length is added, as for slice indices. If it is still negative,
>>> it is truncated to zero, as for slice indices.
>>> Changed in version 2.3: Previously, index() didn’t have arguments for
>>> specifying start and stop positions.
>> Nothing in the above says anything about modifying a sequence...
> When a negative index is passed as the second or third parameter to
> the index() method, the list length is added, as for slice indices.
> I don't understand the mean. the list length is added, why? if it
> changed, the original will change ?
It is just the common rule for negative index.
eg. s[-k] == s[-k + len(s)].
The original sequence is not changed.
>>> who can give a example? and why the s.remove() also point to note 4?
>> Because it has the same behavior when the item is not present in the sequence.
>> Examples using lists:
>> assert ["c", "a", "b", "c", "c"].index("c", 1) == 3
>> ["a", "b"].index("c")
>> except ValueError:
>> print "'c' was not in the list"
>> raise RuntimeError, "Should never get here"
>> x = ["a", "b", "c"]
>> assert len(x) == 2 and x == "a" and x == "c"
> I want a example, maybe: use the a negative index is passed as the
> second or third parameter, and see the length changed.
x = 'abcde'
x.index('d', -3, -1) = x.index('d', 2, 4) = 3
x.index('a', -3, -1) = x.index('a', 2, 4) = -1, raise ValueError
>>> Is the document wrong?
>> No. What made you think so?
> Sorry for my poor english. do you understand me now? thanks!
More information about the Python-list