2012-03-10 3 views
1

Грубо говоря, я ищу более элегантной альтернативой для этого фрагмента кода:Как выбрать последовательные элементы из списка?

# my_list = range(6) # example list 
my_list = ["this", "is", "an", "example", "list"] 
max = len(my_list) 
for i, elem in enumerate(my_list, start=1): 
    if i < max: 
     print elem, my_list[i] 

, который производит:

this is 
is an 
an example 
example list 

Есть ли встроенный для этого?

Редактировать: Я должен был сказать, что я принял range(6) в качестве представителя для любого итерации, чтобы избежать путаницы. Цель состояла в том, чтобы перебрать итерацию, попавшуюся по изображению выше.

ответ

6

Я обычно делаю это:

# x = range(6) 
x = ["this", "is", "an", "example", "list"] 

for prv, nxt in zip(x, x[1:]): 
    print prv, nxt 
+0

Это замечательно, спасибо! Избегала необходимости 'max'. – Aufwind

+0

Однако это не будет работать в 'python3', так как' range' является генератором. – strcat

+0

Я просто написал 'range (6)' как пример итерабельного. Я должен был выбрать нечто более общее. – Aufwind

1

Там нет встроенного, но документы для itertools модуля содержит определение функции pairwise, что делает то же самое.

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