Python: итерация определенного диапазона в списке
Скажем, у меня есть список:
listOfStuff =([a,b], [c,d], [e,f], [f,g])
То, что я хочу сделать, - это итерация через средние 2 способом, аналогичным следующему коду:
for item in listOfStuff(range(2,3))
print item
Конечный результат должен быть:
[c,d]
[e,f]
Этот код в настоящее время не работает, но я надеюсь, что вы поймете, что я пытаюсь сделать.
Ответы
Ответ 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)