2009-04-07 17 views
20

Python'da bunu yapmak için iyi bir yol olduğuna eminim, ancak dile oldukça yeni geldim, bu yüzden kolay bir tane olursa beni affet!Belirli dizinlere sahip bir python listesinden öğe seçilmesi

Bir listem var ve bu listeden belirli değerleri almak istiyorum. Çıkmak istediğim değerler, listedeki dizinleri başka bir listede belirtilmiş olanlardır. Örneğin

:

indexes = [2, 4, 5] 
main_list = [0, 1, 9, 3, 2, 6, 1, 9, 8] 

çıkışı olacaktır:

[9, 2, 6] 

(diğer bir deyişle, indeksler 2, 4 ve main_list ile 5 ile elementler).

Bu, liste anlamaları gibi bir şeyi kullanarak yapılabilmesi gereken bir şey olduğunu hissediyorum, ancak bunu anlayamıyorum (özellikle liste anlaşılırken bir öğenin endeksine nasıl erişileceğini anlayamıyorum) .

cevap

67
[main_list[x] for x in indexes] 

.

+1

şimdi BU, zarif. +1 –

+1

Listeyi anlatan yazılar çok güzel ve okunması kolay. Sık sık yinelemekten de hızlı oluyorlar. –

+0

Bu gerçekten çok hoş. Tam olarak istediğim şey, fark etmeden! – Ben

2
t = [] 
for i in indexes: 
    t.append(main_list[i]) 
return t 
+0

Bu liste bir kavramadan daha az zarif olsa da, Python'a tamamen yeni birisinin bir cevabı olarak bunu daha çok beğeniyorum. –

1

Bence Yuval A'nın çözümü oldukça açık ve basit. Ama aslında bir tek satır liste anlama istiyorsanız: Bu liste kavrayışa sahip olma, nesnelerin listesini döndürür

[e for i, e in enumerate(main_list) if i in indexes] 
+0

Aslında bu çok daha zarif :) Biraz daha az okunabilir olmasına rağmen –

+0

Ah! Bu benim düşündüğüm bir şey. Çok temiz! – Ben

1
map(lambda x:main_list[x],indexes) 
İlgili konular