Подтвердить что ты не робот

Python: итерация определенного диапазона в списке

Скажем, у меня есть список:

listOfStuff =([a,b], [c,d], [e,f], [f,g])

То, что я хочу сделать, - это итерация через средние 2 способом, аналогичным следующему коду:

for item in listOfStuff(range(2,3))
   print item

Конечный результат должен быть:

[c,d]
[e,f]

Этот код в настоящее время не работает, но я надеюсь, что вы поймете, что я пытаюсь сделать.

4b9b3361

Ответ 1

listOfStuff =([a,b], [c,d], [e,f], [f,g])

for item in listOfStuff[1:3]:
    print item

Вам нужно перебрать кусочек вашего кортежа. 1 - это первый элемент, который вам нужен, и 3 (фактически 2 + 1) - это первый элемент, который вам не нужен.

Элементы в списке нумеруются от 0:

listOfStuff =([a,b], [c,d], [e,f], [f,g])
               0      1      2      3

[1:3] принимает элементы 1 и 2.

Ответ 2

Более эффективный способ обработки итераций по фрагменту списка состоит в использовании islice() из модуля itertools:

from itertools import islice

listOfStuff = (['a','b'], ['c','d'], ['e','f'], ['g','h'])

for item in islice(listOfStuff, 1, 3):
    print item

# ['c', 'd']
# ['e', 'f']

Однако это может быть относительно неэффективным с точки зрения производительности, если начальное значение диапазона является большим значением, так как islice должно было бы перебирать первые элементы начального значения-1 перед возвратом элементов.

Ответ 3

Вы хотите использовать нарезку.

for item in listOfStuff[1:3]:
    print item

Ответ 4

Используя iter builtin:

l = [1, 2, 3]
# i is the first item.
i = iter(l)
next(i)
for d in i:
    print(i)