2013-12-25 2 views
0

Как пропустить последний элемент в python?Python for loop - перейти к последнему элементу

СВОЙ СЕЙЧАС СЕЙЧАС !!!!!!!!!!!!

Так, например, у меня есть список

foo = ['hello', 'world','how'] 

И у меня этот цикл

for i in foo: 
    ----------Codes to skip to last element.-------- 

поэтому переменная 'я' становится последним элементом в Foo, который «как ».

if i == 'how': 
     print 'success!' 

И да, мне было интересно, есть ли способ сделать это в цикле for, а не снаружи.

Ближайший я нашел это:

Python skipping last element in while iterating a list using for loop

Пожалуйста, добавьте в объяснении ваших ответов о том, как это работает.

Редактировать: Кроме того, если это невозможно, объясните, почему (необязательно).

+1

если вы что для перехода к последнему элементу, то почему вы используете 'for' цикл? почему бы не просто сделать что-то с 'foo [-1]' – Ever

+0

@ Даже если я просто хочу узнать еще больше методов !!! – leonneo

ответ

2

Вам не придется бегать по всему списку:

foo = ['hello', 'world','how'] 

for i in foo[:-1]: 
    ........ 

Вы можете также определить, если это последнее, выполнив:

foo = ['hello', 'world','how'] 

for i in foo: 
    if i == foo[-1]: 
     print "I'm the last.." 

Для получения дополнительной информации о списке вы можете обратиться Docs

и у вас есть очень хороший учебник here

+0

Нет, но возможно ли это для цикла? – leonneo

+0

Я имею в виду внутри цикла, а не в цикле, заменяя мои прокомментированные строки в коде, указанном в вопросе. – leonneo

+0

@leonneo посмотреть на редактирование mt - это то, что вы хотели? –

1

Другой метод, чтобы пропустить последний элемент

>>> for index, item in enumerate(foo): 
     if index==(len(foo)-1): 
      # last element 
     else: 
      # Do something 
+0

Зачем перечислять? Вы можете объяснить? – leonneo

+0

перечисление сделает некоторые циклы немного более четкими. вы получите индекс элемента вместе с элементом в последовательности. Если вам нужно пропустить последний элемент, я взял индекс и сравнил его с len списка, чтобы пропустить последний – Vb407

1

Я понимаю, что вы хотите проверить, находятся ли вы достигли конца цикла без перерыва ИНГ из него. Python имеет красивый для ... еще и while..else конструкции для этого. Предложения еще используется, когда цикл завершается без вспыхивает Так что скелет для вашего кода:

for word in foo: 
    ... you may break out 
else: 
    print success 

Простых и элегантных (и более эффективных тоже)

EDIT: ОК, теперь Я получаю то, что вы хотите. Вы можете использовать нарезку - как это было предложено, но Ислицы из itertools будет делать работу лучше:

from itertools import islice: 
for word in islice(foo, len(foo)-1): 
+0

. Дайте более четкий пример. – leonneo

+0

Какой прорыв? Что вы имеете в виду? – leonneo

+0

Посмотрите на мой ответ – leonneo

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