如何打印python列表中的每个第3个数字而不使用切片表示法(方括号)?

时间:2017-02-10 16:12:43

标签: python

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循环,但我只是不知道如何开始。

3 个答案:

答案 0 :(得分:0)

如果所有<div ng-controller="CreateSpreadsheetCtrl as csCtrl" ng-init="csCtrl.init()"> <select multiple="multiple" style="height:100px;" class="form-control" ng-model="csCtrl.Template.BusinessUnitMappings" ng-options="department as department.LocalizedName for department in csCtrl.DepartmentMasters"> </select> </div> startstop(不完全是切片表示法)允许range,请执行以下操作:

step

如果没有,请使用条件理解,其条件基于模数:

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

答案 1 :(得分: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]

但是我的第一条评论,如果对上述行的代码审查将是:使用切片语法,则无需在此使用枚举

答案 2 :(得分: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))