2013-07-15 2 views
0
data = ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg', 'hhh', 'iii', 'jjj'] 

Это работает именно так, как я хочу, чтобы он работал.Доступ к двум элементам списка за один раз с перечислением

i = 0 
print 
for i in range(len(data) - 1): 
    print data[i] + ' ' + data[i + 1] 

Этот код не работает. Есть ли способ заставить его работать с enumerate или это решение является самым простым/лучшим способом?

print 
for i, d in enumerate(data): 
    print d + ' ' + d[i + 1] # IndexError: string index out of range 

Или есть другой способ доступа к двум элементам одновременно?

ответ

1

В вашей enumerate функции, то i представляет собой индекс позиции элементов списка и d представляет значение элемента, присутствующего на i-й позиции индекса. Итак, когда вы делаете d[i+1], вы нарезаете d переменной.

Когда значение равно i последний элемент data переменной в блоке enumerate, доступ к i+1-й элемент в data i.e., data[i+1] выдаст ошибку индекса (так как i+1 й элемент не существует в data). Поскольку вы хотите одновременно использовать как i, так и i+1, использование enumerate может не решить проблему полностью. Если вы хотите его использовать, вам необходимо изменить код на

for i,d in enumerate(data): 
    if i < (len(data) - 1): 
     print d + ' ' + data[i+1] 
+0

Спасибо. Я все еще пытаюсь склонить голову к тому, почему это 'data [i + 1]' вместо 'd [i + 1]', но я доберусь туда. –

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