[Tutor] Rearrange a list
Peter Otten
__peter__ at web.de
Fri May 1 07:51:33 EDT 2020
Peter Otten wrote:
> EK Esawi via Tutor wrote:
>
>> Hi All--,
>>
>> I have a list, e.g. x=[1,2,3,4,5,6,7,8,9,10,……]. I want to rearrange the
>> order of the positions of the list values as follow
>> [1,2,4,3,5,6,8,7,9,10,12,13,15……]. Or something like this
>> [1,[2,4],[3,5],[6,8],[7,9],[10,12],……] which then can be flattened. I am
>> not concerned about the 1st item on the list. I am hoping that this can
>> be done vis list comprehension or something like it w/o using other
>> Python modules.
>>
>> Here is my attempt but the resulting pairing is wrong. It contains
>> unwanted pairs such as [4,6] and [8,10]
>>
>>
>> X= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>
>> b=[[i, i + 2] for i in range(1,len(x) - 1)]
>>
>> b=[[1, 3], [2, 4], [3, 5], [4, 6], [5, 7], [6, 8], [7, 9], [8, 10]]
>>
>> again, I am not concerned with the 1st sublist
>
> How about
>
>>>> x
> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>> x[3::4], x[2::4] = x[2::4], x[3::4]
>>>> x
> [1, 2, 4, 3, 5, 6, 8, 7, 9, 10]
>
> ?
To be more explicit about a potential problem: this doesn't work for
arbitrary lengths:
>>> x
[1, 2, 3, 4, 5, 6, 7]
>>> x[3::4], x[2::4] = x[2::4], x[3::4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 2 to extended slice of size 1
More information about the Tutor
mailing list