Python - способ отличить индекс элемента в списке и содержимое элемента в цикле FOR? - PullRequest
0 голосов
/ 06 сентября 2010

Например, если бы я хотел прокрутить список и выполнить какую-либо операцию со всеми записями, кроме последней, я мог бы сделать это:

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 ]

10 голосов
/ 06 сентября 2010

Использовать ломтик:

for item in z[:-1]:
    # do something
4 голосов
/ 06 сентября 2010

вы можете использовать:

for index, item in enumerate(z):
    if index != len(z)-1:
        print index
1 голос
/ 06 сентября 2010

[z.foo() for z in z[:-1]

1 голос
/ 06 сентября 2010
for index, item in enumerate(your_list):
    do_something
0 голосов
/ 05 октября 2010
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):
...