对于循环 - 迭代器增加1

时间:2016-06-18 14:56:13

标签: python for-loop

我一直在学习Python,但我来自Java和Java的背景,您可以设置迭代器在循环中每次运行时增加或减少的值。例如,您可以说for(int i = 0; i < 10; i = i + 2),以便迭代器每次增加2。

从目前为止我在Python教程中看到的情况来看,for循环是不变的,并且从开始值到结束值迭代每个整数,每次增加一。有没有办法操纵Python for循环来为迭代器设置自己的增加/减少值?

2 个答案:

答案 0 :(得分:3)

您可以使用以下命令在python中实现相同的目的:

public class MyServletContextListener implements ServletContextListener {
    private ScheduledExecutorService executorService;
    public void contextInitialized(ServletContextEvent sce) {
        executorService = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
            @Override
            public Thread newThread(Runnable r) {
                Thread t = Executors.defaultThreadFactory().newThread(r);
                t.setDaemon(true);
                return t;
            }
        });
    }

    public void contextDestroyed(ServletContextEvent sce) {
        executorService.shutdownNow();
    }

    public void startExecutionAt(int targetHour, int targetMin, int targetSec){
        // code defined above here
    }
}

See documentation on range

您的代码将是

>>> range(1, 10, 2)
[1, 3, 5, 7, 9]

答案 1 :(得分:1)

当您使用for循环迭代Python中的索引时,通常会构造一个range对象。

for i in range(10):
    print(i)
# 0, 1, ..., 9

range有一个构造函数,它接受三个参数:start,stop和step。

for i in range(0, 10, 2):
    print(i)
# 0, 2, ..., 8

但通常你只是迭代对象中的项而不是索引。

lst = [0, 1, 2, 3]
for element in lst:
    print(element)
# 0, 1, 2, 3

但是,如果您的对象支持切片(如列表那样),则很容易获得其他所有成员。

lst = [0, 1, 2, 3]
for element in lst[::2]: 
    print(element)
# 0, 2

Google“在Python中列出切片”如果您想了解有关此语法的更多信息。