Есть ли способ перебрать подпункт списка в Python - PullRequest
3 голосов
/ 07 февраля 2009

Итак, для списка, содержащего 1000 элементов, я хочу выполнить цикл от 400 до 500. Как вы это делаете?

Я не вижу способа использовать методы для каждого и для диапазона.

Ответы [ 3 ]

22 голосов
/ 07 февраля 2009
for x in thousand[400:500]:
    pass

Если вы работаете с итератором вместо списка, вы должны использовать itertools :

import itertools
for x in itertools.islice(thousand, 400, 500):
    pass

Если вам нужно перебрать thousand[500], используйте 501 в качестве последнего индекса. Это будет работать, даже если thousand[501] не является допустимым индексом.

7 голосов
/ 07 февраля 2009
for element in allElements[400:501]:
     # do something

Это ломтики и генерируют подсписок всего списка. Они являются одним из основных элементов Python.

2 голосов
/ 07 февраля 2009

Использование

for element in allElements[400:501]:
    doSomething(element)

заставляет Python создавать новый объект и может оказать некоторое влияние на использование памяти.

Вместо этого я бы использовал:

for index in xrange(400, 501):
    doSomething(allElements[index])

Этот способ также позволяет вам манипулировать индексами списков во время итерации.

EDIT: в Python 3.0 вы можете использовать range() вместо xrange(), но в 2.5 и более ранних версиях range() создает список, а xrange() создает генератор, который потребляет меньше вашей драгоценной оперативной памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...