重新排列python列表中元素的顺序

时间:2016-03-24 14:25:21

标签: python list tuples

我在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)]

它包含多个元组。

如何重新排列它以便偶数位置的所有元素都移动到列表的末尾?不确定如何处理这个问题。

2 个答案:

答案 0 :(得分:5)

使用切片,并为备用值指定步长值。

例如:

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

结果是:

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

也就是说,奇数索引处的所有值后跟偶数索引处的所有值,索引从0开始计数。

答案 1 :(得分: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]