Например, если бы я хотел прокрутить список и выполнить какую-либо операцию для всех, кроме последней записи списка, я мог бы сделать это:
z = [1,2,3,4,2]
for item in z:
if item != z[-1]:
print z.index(item)
Но вместо того, чтобы получить вывод "... 0 1 2 3," я бы получил "... 0 2 3."
Есть ли способ выполнить операцию для всех элементов, кроме последнего, в списке (если в списке есть ИДЕНТИАЛЬНЫЕ элементы), не используя решение типа «для диапазона х (len (list) - 1)»)? Т.е. я хочу продолжать использовать «для элемента в списке».
Большое спасибо!
5 ответов
Вы можете использовать:
for index, item in enumerate(z):
if index != len(z)-1:
print index
def all_but_last(iterable):
iterable= iter(iterable)
try: previous= iterable.next()
except StopIteration: return
for item in iterable:
yield previous
previous= item
Поместите его в модуль и используйте там, где вам это нужно.
В вашем случае вы бы сделали:
for item in all_but_last(z):
[z.foo() for z in z[:-1]
for index, item in enumerate(your_list):
do_something
Используйте срез:
for item in z[:-1]:
# do something
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.