2017-02-10 83 views
-2
def every_third(lst): 
    ''' 
    every_third that takes a list as a parameter and returns 
    a new list that contains every third element of the original 
    list, starting at index 0. 

    >>> every_third([1,2,3,4,5,6,7,8,9,10]) 
    [1,4,7,10] 

我該怎麼做?我知道我們可以使用for循環,但我不知道如何開始。如何在python列表中打印每個第三個數字而不使用切片符號(方括號)?

+3

我想你忘了在你的問題中包括你試過的方法。 – L3viathan

回答

0

如果range允許所有的startstopstep(這是不完全切片表示法),只是做:

def every_third(lst): 
    return [lst[i] for i in range(0, len(lst), 3)] 

如果沒有,使用條件的理解基於模條件:

def every_third(lst): 
    return [lst[i] for i in range(len(lst)) if i%3 == 0] 
0

另一個竅門使用enumerate

seq = [1,2,3,4,5,6,7,8,9,10] 
every_three = [value for idx, value in enumerate(seq) if idx % 3 == 0] 

但我的第一個評論,如果代碼審查上面的行將是:使用切片語法,這裏不需要使用枚舉這裏

0

如果問題只是切片符號,就像在[:3]中,我認爲它應該是這樣的一個想法,我想你是在做練習吧?

list=[1,2,3,4,5,6,7,8,9,10] 

def third(list): 
    res=[] 
    count=3 
    res.append(list[0]) 
    while len(list)>0: 

     if count>0: 
      list.pop(0) 
     else: 
      res.append(list[0]) 
      list.pop(0) 
      count=3 
     count -= 1 
    return res 

print(third(list)) 
相關問題