Как начать со второго индекса для цикла for - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть этот цикл.Я хочу, чтобы i in range(nI) начинался со второго числа в списке I.Не могли бы вы вести меня?

I=[0,1,2,3,4,5,6]
nI=len(I)
for i in range(nI):
    sum=0
    for v in range(nV):
        for j in range(nJ):
            sum=sum+x1[i][j][v]
return sum

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Если вы хотите перебрать список из второго элемента, просто используйте range(1, nI) (если nI - длина списка или около того).

for i in range(1, nI):
    sum=0
    for v in range(nV):
        for j in range(nJ):
            sum=sum+x1[i][j][v]

Вероятно, часть вашей функции где-то потерялась, но в любом случае в общем диапазоне () работает так:

range(start_from, stop_at, step_size)

т.е.

for i in range(2, 7, 2):
    print(i, end=' ')

Out:
2 4 6

Редактировать

Пожалуйста, помните: python использует нулевую индексацию, т.е. первый элемент имеет индекс 0, второй - 1 и т. Д.

По умолчанию rangeначинается с 0 и заканчивается значением переданного параметра минус один. Если есть явное start , итерация начинается с его значения.Если есть шаг , он продолжается, пока range возвращает значения меньше значения stop .

for i in range(1, 7, 2):
    print(i, end=' ')

Out: 
1 3 5  # there's no 7!

Подробное описание range встроенный здесь .

0 голосов
/ 01 января 2019

Прежде всего следует помнить, что python использует нулевую индексацию.

Вы можете выполнять итерации по списку, за исключением использования функции range, чтобы получить индексы элементов, которые вы хотите, или фрагменты, чтобы получить элементы.

Что меня смущает, так это то, что в вашем примере значения и индексы одинаковы, поэтому для пояснения я буду использовать этот список в качестве примера:

I = ['a', 'b', 'c', 'd', 'e']
nI = len(I) # 5

Функция диапазона позволититерировать по индексам:

for i in range(1, nI):
    print(i)
# Prints:
# 1
# 2
# 3
# 4

Если вы хотите получить доступ к значениям с помощью функции диапазона, вы должны сделать это следующим образом:

for index in range(1, nI):
    i = I[index]
    print(i)
# Prints:
# b
# c
# d
# e

Вы также можете использовать нарезку массива длясделайте это, и вам даже не нужно nI.Срез массива возвращает новый массив с вашим срезом.
Срез выполняется с помощью the_list_reference[start:end:steps], где все три параметра являются необязательными и:
start - это индекс первого, который будет включен в срез
end - это индекс первого элемента, который должен быть исключен из среза.
steps - это количество шагов для каждого следующего индекса, начиная с (как и ожидалось) start (если steps равно 2 и начинается с1 получает каждый нечетный индекс).
Пример:

for i in I[1:]:
    print(i)
# Prints:
# b
# c
# d
# e
0 голосов
/ 05 декабря 2018

Диапазон начинается с индекса 0, если не указано иное.Вы хотите использовать что-то вроде

for i in range(1,nI):
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...