2016-06-18 2 views
0

Я изучаю Python, но я исхожу из фона Java и на Java, вы можете установить значение, которое итератор увеличивает или уменьшает при каждом проходе через цикл. Например, вы можете сказать for(int i = 0; i < 10; i = i + 2), чтобы итератор увеличивался на два каждый раз.Для цикла - увеличение итератора на 1

Из того, что я видел до сих пор в учебниках Python, цикл for неизменен и итерации через каждое целое от начального значения до конечного значения, увеличиваясь на единицу каждый раз. Есть ли способ манипулировать циклом Python for, чтобы установить собственное значение увеличения/уменьшения для итератора?

ответ

3

Вы можете использовать следующий для достижения того же в Python:

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

See documentation on range

Вы код будет поэтому

for i in range(0, 10, 2): 
    # do_stuff() 
1

При использовании for цикла для перебора над index в Python, обычно вы создаете объект range.

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

range имеет конструктор, который принимает три аргумента, запуска, остановки и шаг.

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 "list slicing in Python", если вы хотите получить дополнительную информацию об этом синтаксисе.

Смежные вопросы