2017-02-10 135 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)) 
相关问题