Вы можете использовать генератор и диапазон, чтобы проверить, находится ли индекс перечисления внутри вашего диапазона:
a = 2
pos = range(5,15)
d = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,]
total = sum(elem == a for idx,elem in enumerate(d) if idx in pos)
print(total)
Это не будет копировать список, но будет повторять полный оригинал. Быстро проверить, находится ли idx
в range
.
Развертывание l oop приведет к перерыву - если крепость крайне важна, вы должны рассчитать время для своих подходов:
maxpos = max(pos)
minpos = min(pos)
for idx,elem in enumerate(d):
if idx < minpos:
continue
elif idx > pos:
break
# check elem and counts something up
continue
Это может быть, а может и не быть быстрее, если вы тестируете только небольшую часть вашего списка - это ничего не изменит, если вы добавите последние элементы в ваш список, но если ваш список огромен и ваша целевая область «передняя» i sh - перерыв может сэкономить вам несколько циклов