list reversal error

MRAB python at mrabarnett.plus.com
Thu Mar 3 18:20:06 EST 2016


On 2016-03-03 23:08, John Gordon wrote:
> In <8b3d06eb-0027-4396-bdf8-fee0cc9ff771 at googlegroups.com> vlyamtsev at gmail.com writes:
>
>> i have list of strings "data" and i am trying to build reverse list data1
>> data1 = []
>> for i in range(len(data)):
>>    j = len(data) - i
>>    data1.append(data[j])
>
>> but i have the following error:
>> data1.append(data[j])
>> IndexError: list index out of range
>>
>> am i doing it wrong?
>> Thanks
>
> Python lists are zero-indexed, meaning a list of five items will have
> indexes 0 to 4.
>
> The first time through your loop, i is 0, so
>
>      j = len(data) - i
>
> evaluates to
>
>      j = len(data)
>
> which would yield 5 for a five-element list, but the last actual element
> is in data[4].
>
A simpler alternative is to use 'reversed':

data1 = list(reversed(data))




More information about the Python-list mailing list