Добавил:
хачю сдать сессию Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3. Списки и цикл for - Jupyter Notebook

.pdf
Скачиваний:
10
Добавлен:
09.07.2025
Размер:
608 Кб
Скачать

19.09.2022, 01:58

3. Списки и цикл for - Jupyter Notebook

Так как же тогда копировать списки? Во-первых, у списков есть метод copy() .

In [94]:

 

1

 

# дубль два

 

2

 

l1 = [1, 8, 9, 4]

3

 

l2 = l1.copy()

4

 

 

 

 

5

 

# теперь делаем что угодно

6

 

 

 

 

7

 

l2[3] = 100

8

 

 

 

 

9

 

print(l1)

10

 

print(l2) # все нормально

 

 

 

 

 

[1,

8,

9,

4]

[1,

8,

9,

100]

Во-вторых, можно сделать срез и "срезать" весь список:

In [95]:

1

# дубль три

2

 

3

l1 = [1, 8, 9, 4]

4

l2 = l1[:] # полный срез

5

 

6

# теперь делаем что угодно

7

 

8

l2[3] = 100

9

 

10print(l1)

11print(l2) # все нормально

[1, 8, 9, 4] [1, 8, 9, 100]

Цикл for

Раз есть списки, хочется научиться пробегаться по их элементам. Например, выводить на экран не весь список age сразу, а постепенно, каждый элемент с новой строчки. Для этого есть циклы. Рассмотрим цикл for.

In [97]:

1 for i in age:

2print(i)

99

18

19

Как устроен цикл выше? Кодом выше мы доносим до Python мысль: пробегайся по всем элементам списка age ( for i in age ) и выводи каждый элемент на экран ( print(i) ). Вообще любой цикл for имеет такую структуру: сначала указывается, по каким значениям нужно пробегаться, а потом, что нужно

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/3. Списки и цикл for.ipynb

11/14

19.09.2022, 01:58

3. Списки и цикл for - Jupyter Notebook

делать. Действия, которые нужно выполнить в цикле, указываются после двоеточия в for ‒ эта часть назвается телом цикла.

Буквы в конструкции for могут быть любые, совсем необязательно брать букву i. Python сам поймет, что мы имеем в виду, запуская цикл. Давайте, используя цикл, создадим новый список.

In [106]:

 

1

 

list1 = [1, 3, 5, 9]

 

2

 

list2 = [] # новый список

3

 

for k in list1:

4

 

 

list2.append(k * 2) # добавляем в него значения из k1, умноженные на 2

5

 

print(list2)

 

 

 

 

 

[2,

6,

10,

18]

Конечно, циклы нужны не только для того, чтобы работать со списками. С помощью циклом можно решить любую задачу, которая требует повторения одинаковых действий. Вспомним задачу с семинара про питона, который греется на солнышке и каждый день увеличивает время пребывания на солнце. Тогда мы решали эту задачу, перезапуская ячейку с кодом несколько раз. Теперь воспользуемся циклом.

In [50]:

1 # создадим список с номерами дней

2

3 days = [2, 3, 4, 5, 6, 7, 8, 9, 10] 4

5 # начальное значение времени, которое питон проводит на солнце

6

7 time = 1

8

9 print(1, time)

10

11# теперь будем изменять значение time в цикле

12# и выводить на экран номер дня и время

13

14for d in days:

15time = time + 3

16print(d, time)

1 1

2 4

3 7

4 10

5 13

6 16

7 19

8 22

9 25

10 28

Функция range()

На самом деле, можно было поступить еще проще. В Python есть функция range() , которая позволяет перебирать целые числа на заданном промежутке, не создавая при этом сам список чисел.

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/3. Списки и цикл for.ipynb

12/14

19.09.2022, 01:58

3. Списки и цикл for - Jupyter Notebook

In [44]:

1 # пример

2

3 for j in range(0, 9):

4print(j)

0

1

2

3

4

5

6

7

8

Правый конец заданного в range() промежутка не включается, будьте бдительны. В примере выше на экран были выведены числа от 0 до 5, число 6 включено не было. Применим range() к нашей задаче про питона:

In [46]:

 

 

1

time = 1

 

 

2

print(1,

time)

 

3

 

 

 

4

for d in

range(2,

11):

5

time

= time +

3

6print(d, time)

1 1

2 4

3 7

4 10

5 13

6 16

7 19

8 22

9 25

10 28

Если мы хотим посмотреть на то, какие значения будут в range() , придется превратить его в список:

In [107]:

1 range(0, 3) # ни о чем

Out[107]:

range(0, 3)

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/3. Списки и цикл for.ipynb

13/14

19.09.2022, 01:58

3. Списки и цикл for - Jupyter Notebook

In [108]:

1 list(range(0, 18)) # значения внутри range

Out[108]:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

Полезный факт: если нас интересуют числа на промежутке, начиная с нуля, в range() левый конец можно не указывать, 0 будет выбран по умолчанию.

In [111]:

1 list(range(18))

Out[111]:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

In [ ]: 1

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/3. Списки и цикл for.ipynb

14/14