2016-03-24 9 views
0

Python aşağıdaki listesi var:piton listesindeki öğelerin sırasını yeniden düzenleme

[(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)] 

Birden dizilerini içerir.

Çift sayı konumlarındaki tüm öğelerin listenin sonuna taşınması için nasıl yeniden düzenleyebilirim? Buna nasıl yaklaşacağından emin değilim.

+0

Beklenen sonuç nedir? [(0.12156862745098039, 0.7058823529411765, 0.4666666666666667), (1.0, 0.054901960784313725, 0.4980392156862745), ...] 'yi istiyor musunuz? – falsetru

+0

Ve çift sayılı bir pozisyon olarak ne sayılır? Her tuple'daki ikinci elementi mi kastediyorsun? Yoksa sürekli tupllar arasında mı sayıyorsun? – zephyr

cevap

5

Kullanım dilimleme, ve bir adım va belirtmek istiyorum alternatif değerler için 2 lue. Örneğin bu şekilde

:

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

Sonucu geçerli:

olduğunu
[1, 3, 5, 0, 2, 4, 6] 

, 0'dan sayma indeksi ile bile endeksleri tüm değerler, ardından garip endeksleri tüm değerler.

3

Yalnızca tek öğeleri içeren bir listeyi yalnızca tek öğeleri içeren bir listeye ekleyebilirsiniz. Dizi dilimleme kullanılarak çift ve tek elemanlar ayıklanır.

ilk unsur olarak ele alırsak, hatta (dizin, 0, çünkü bile)

ilk eleman (o pozisyon 1'deki var ve 1 garip) tek olarak kabul ederse

new = data[1::2] + data[::2] 
, Eğer düzeni

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

ters ve bir örnek için

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

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

ve ara liste üretmek istemiyorsanız, itertools'tan zincir ve islice 'new = list (zincir (islice (data, 1, None, 2), islice (data, 0, None, 2) olarak kullanabilirsiniz.)) ' – Copperfield