2013-05-25 3 views
1

Предположим, что у меня есть простой код.Для подсчета от 2

list = [1,3,4,5,6,7,8] 

for i, val in enumerate(list): 
     print(val) 

Я хотел бы начать с i=2. Как это делается простейшим способом?

Нечто вроде for(int i=2; i<list.lenght; i++) в java.

+2

Еще один хороший совет: не используйте 'list' как имя переменной, так как это встроенный тип. –

ответ

4

Вы можете использовать обычный цикл по индексу:

lst = [1, 3, 4, 5, 6, 7, 8] 
for i in range(2, len(lst)): 
    val = lst[i] 
    print(val) 

Или вы пропустите первые элементы:

lst = [1, 3, 4, 5, 6, 7, 8] 
for i, val in enumerate(lst): 
    if i < 2: 
     continue 
    print(val) 

Третий вариант будет использовать itertools.islice, чтобы пропустить первый элемент. Это позволит вам сохранить индексы как 0, 1, ... хотя вы пропустили элемент:

for i, val in enumerate(itertools.islice(lst, 2, None)): 
    print(i, val) # would begin with 1 3, then 2 4, … 

Как ваш итерацию список, вы можете использовать список индексации для этого также:

for i, val in enumerate(lst[2:]): 
    print(i, val) 
+1

Во втором случае вы не могли бы сделать что-то вроде: 'lst [2:]'? – squiguy

+0

@squiguy Для второго? Нет, если вы хотите, чтобы исходные индексы работали. – poke

+0

Это правда. Я просто подумал, так как плакат хотел * начать * оттуда, вы могли бы это сделать. – squiguy

0
In [1]: for i,val in enumerate(list[2:]): 
      print(val) 
    .... 
4 
5 
6 
7 
8 
Смежные вопросы