Для петель диапазон в Python - PullRequest
0 голосов
/ 09 июля 2020

В случае FOR LOOPS, когда мы пишем диапазон, как показано в следующем коде:

a=[]
for i in range(1,35):
    if i%7==0:
        a.append(i)
print(a)

почему он не включает последнее значение.

Но в следующем code:

for i in range(1,18):
    if row[i]=='A':
        print(row)

Он включает последнее значение, которое также равно 18. (Второй код используется в файле csv)

Пожалуйста, помогите кому-нибудь.

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

range(start, end) не включает end. Итак, range(1,18) включает числа от 1 до 17.

См. здесь .

Я предполагаю, что второй для l oop во втором примере проверяет значения из списка или массив. Или даже строки в файле. Они начинают отсчет с 0. Таким образом, 18-й элемент в списке / файле имеет индекс 17. Таким образом, вы все равно проверяете его.

Например:

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
for i in range(0,18):
    print(f"{i}: {a[i]}")

Будет выведено:

0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: 7
7: 8
8: 9
9: 10
10: 11
11: 12
12: 13
13: 14
14: 15
15: 16
16: 17
17: 18

0 голосов
/ 09 июля 2020

Ни один из них не будет включать последнее значение, если под последним значением вы подразумеваете 35 и 18 соответственно. Я считаю полезным посмотреть, что на самом деле эти функции выводят в интерактивной подсказке.

>>> print (range(1, 18))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
>>> print (range(1, 35))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34] 

Диапазон - это не что иное, как список (python 2) или ленивая последовательность (python 3) из n до n-1 включительно. Надеюсь, это поможет.

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