每隔n次迭代做一些事情而不使用计数器变量

Pyt*_*ast 13 python

我有一个包含100多个元素的可迭代列表.我希望在每个第10个可迭代元素之后做一些事情.我不想使用计数器变量.我正在寻找一些不包括计数器变量的解决方案.

目前我喜欢这样:

count = 0
for i in range(0,len(mylist)):
    if count == 10:
        count = 0
        #do something
    print i
    count += 1
Run Code Online (Sandbox Code Playgroud)

有什么办法可以省略反变量吗?

Jak*_*yer 33

for count, element in enumerate(mylist, 1): # Start counting from 1
    if count % 10 == 0:
        # do something
Run Code Online (Sandbox Code Playgroud)

使用枚举.它为此而建


mds*_*ggs 7

只是为了显示另一个选项......希望我能正确理解你的问题...切片会给你准确的列表元素,而不必遍历每个元素或保留任何枚举或计数器.请参阅解释Python的切片表示法.

如果你想从第一个元素开始并从那一点获取每个第10个元素:

# 1st element, 11th element, 21st element, etc. (index 0, index 10, index 20, etc.)
for e in myList[::10]:
    <do something>
Run Code Online (Sandbox Code Playgroud)

如果你想从第10个元素开始并从那一点获取每个第10个元素:

# 10th element, 20th element, 30th element, etc. (index 9, index 19, index 29, etc.)
for e in myList[9::10]:
    <do something>
Run Code Online (Sandbox Code Playgroud)

第二个选项的示例(Python 2):

myList = range(1, 101)  # list(range(1, 101)) for Python 3 if you need a list

for e in myList[9::10]:
    print e  # print(e) for Python 3
Run Code Online (Sandbox Code Playgroud)

打印:

10
20
30
...etc...
100
Run Code Online (Sandbox Code Playgroud)