2011-06-21 69 views
11

而不是根據它的值處理項目,我需要根據項目的位置運行一個函數。這是一個基於列表內容的過濾示例。如何從列表中的某個項目中篩選出一個項目?

only_words = filter(str.isalpha, my_list) 

我想創建一個包含偶數位置只項列表的一個切片,那就是:

new_list = [] 
pos = 0 
for item in my_list: 
    if pos % 2 == 0: 
     new_list.append(item) 

這是太醜陋。更好的建議?

回答

20

您可以使用此:my_list[::2](奇數 - my_list[1::2]

+0

,使該奇數位置。你的意思是'my_list [:: 2]'。 –

+0

你能解釋一下嗎? '::'是一個特殊的操作符嗎?從未見過這樣的事情。 – naeg

+0

@lazyr謝謝,我總是混淆這些詞。 :-( – DrTyrsa

6
[v for k, v in enumerate(mylist) if k % 2 == 0] 
+1

切片更好,但'enumerate()'需要更多的愛。 –

相關問題