2016-03-24 4 views
0

У меня есть следующий список в Python:Перегруппировка порядка элементов в списке питона

[(0.12156862745098039, 0.4666666666666667, 0.7058823529411765), (1.0, 0.4980392156862745, 0.054901960784313725), (0.17254901960784313, 0.6274509803921569, 0.17254901960784313), (0.8392156862745098, 0.15294117647058825, 0.1568627450980392), (0.5803921568627451, 0.403921568627451, 0.7411764705882353), (0.5490196078431373, 0.33725490196078434, 0.29411764705882354), (0.8901960784313725, 0.4666666666666667, 0.7607843137254902), (0.4980392156862745, 0.4980392156862745, 0.4980392156862745), (0.7372549019607844, 0.7411764705882353, 0.13333333333333333), (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)] 

Он содержит множество кортежей.

Как я могу изменить его так, чтобы все элементы с четными позициями позиции были перенесены в конец списка? Не совсем уверен, как подойти к этому.

+0

Каков ожидаемый результат? Вы хотите '[(0.12156862745098039, 0.7058823529411765, 0.4666666666666667), (1.0, 0.054901960784313725, 0.4980392156862745), ...]'? – falsetru

+0

И что считается четным номером? Вы имеете в виду второй элемент в каждом кортеже? Или вы постоянно перечитываете между кортежами? – zephyr

ответ

5

Использование нарезка, и указать шаг ва lue of 2 для альтернативных значений.

Так, например:

l = [0,1,2,3,4,5,6] 
print(l[1::2] + l[::2]) 

Результат:

[1, 3, 5, 0, 2, 4, 6] 

То есть, все значения в нечетных индексов с последующим всех значений в четных индексов, с индексом считая от 0.

3

Вы можете просто добавить список, содержащий только четные элементы, в список, содержащий только нечетные элементы. Четные и нечетные элементы извлекаются с использованием массива.

Если вы считаете, первый элемент будет даже (поскольку индекс, 0, даже)

new = data[1::2] + data[::2] 

Если вы считаете первый элемент нечетным (это в положении 1 и 1 нечетно), вы бы изменить порядок

data[::2] + data[1::2] 

и для примера

data = [0,1,2,3,4,5] 
new = data[1::2] + data[::2] 

# [1, 3, 5, 0, 2, 4] 
+1

, и если вы не хотите создавать список посредников, вы можете использовать цепочку и islice из itertools как 'new = list (цепочка (islice (data, 1, None, 2), islice (data, 0, None, 2))) ' – Copperfield

Смежные вопросы