Программирование на языке Python. Массивы (списки)

Содержание

Слайд 2

Списки Большинство программ работает не с отдельными переменными, а с набором

Списки

Большинство программ работает не с отдельными переменными, а с набором переменных.

Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры или из файла.
Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”).
Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:
P = [2, 3, 5, 7, 11, 13]
R = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']
Здесь P[0]==2, R[2]==‘Yellow’.
Слайд 3

Что такое массив? Массив – это группа переменных одного типа, расположенных

Что такое массив?

Массив – это группа переменных одного типа, расположенных в

памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер (индекс).

Надо:

выделять память
записывать данные в нужную ячейку
читать данные из ячейки

Слайд 4

Что такое массив? A массив 2 15 НОМЕР элемента массива (ИНДЕКС)

Что такое массив?

A

массив

2

15

НОМЕР элемента массива
(ИНДЕКС)

A[0]

A[1]

A[2]

A[3]

A[4]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ

элемента массива: 15
Слайд 5

Массивы в Python: списки A = [1, 3, 4, 23, 5]

Массивы в Python: списки

A = [1, 3, 4, 23, 5]

A =

[1, 3] + [4, 23] + [5]

[1, 3, 4, 23, 5]

A = [0]*10

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Создание массива из N элементов:

N = 10
A = [0]*N

Слайд 6

Заполнение массива N = 10 # размер массива A = [0]*N

Заполнение массива

N = 10 # размер массива
A = [0]*N # выделить

память
for i in range(N):
A[i] = i

В краткой форме:

N = 10 # размер массива
A = [ i for i in range(N) ]

Целыми числами (начиная с 0!):

i

i

Слайд 7

Заполнение случайными числами from random import randint N = 10 #

Заполнение случайными числами

from random import randint
N = 10 # размер массива
A

= [0]*N # выделить память
for i in range(N):
A[i] = randint(20,100)

В краткой форме:

from random import randint
N = 10
A = [ randint(20,100)
for i in range(N) ]

из библиотеки (модуля) random

взять функцию randint

Слайд 8

Вывод массива на экран Как список: print ( A ) [1,

Вывод массива на экран

Как список:

print ( A )

[1, 2, 3, 4,

5]

В строчку через пробел:

for i in range(N):
print ( A[i], end = " " )

1 2 3 4 5

или так:

for x in A:
print ( x, end = " " )

1 2 3 4 5

пробел после вывода очередного числа

или так:

print ( *A )

разбить список на элементы

print (1, 2, 3, 4, 5)

Слайд 9

Задачи «3»: Ввести два натуральных числа a и b (a Пример:

Задачи

«3»: Ввести два натуральных числа a и b (a < b)

и заполнить массив из 10 элементов случайными числами в диапазоне от a до b.
Пример:
Введите границы диапазона:
5 10
10 9 10 6 8 5 9 6 10 9

«4»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов случайными числами в диапазоне между a и b (a может быть больше b).
Пример:
Введите границы диапазона:
10 5
10 9 10 6 8 5 9 6 10 9

Слайд 10

Задачи «5»: Ввести два натуральных числа a и b и заполнить

Задачи

«5»: Ввести два натуральных числа a и b и заполнить массив

из 10 элементов: первая половина массива заполняется случайными числами в диапазоне между a и b (a может быть больше b), а вторая половина массива содержит их квадраты в том же порядке.
Пример:
Введите границы диапазона:
10 5
5 8 7 10 6 25 64 49 100 36
Слайд 11

Ввод массива с клавиатуры Создание массива: N = 10 A =

Ввод массива с клавиатуры

Создание массива:

N = 10
A = [0]*N

for i in

range(N):
A[i] = int( input() )

или кратко:

A = [int(input()) 
for i in range(N)]

Ввод по одному элементу в строке:

Слайд 12

Ввод массива с клавиатуры Ввод всех чисел в одной строке: data

Ввод массива с клавиатуры

Ввод всех чисел в одной строке:

data = input()

# "1 2 3 4 5"
s = data.split() # ["1","2","3","4","5"]
A = [ int(x) for x in s ]
# [1,2,3,4,5]

int(x)

или так:

A = [int(x) for x in input().split()]

Слайд 13

Как обработать все элементы массива? Создание массива: Обработка: N = 5

Как обработать все элементы массива?

Создание массива:
Обработка:

N = 5
A = [0]*N

# обработать

A[0]
# обработать A[1]
# обработать A[2]
# обработать A[3]
# обработать A[4]
Слайд 14

Как обработать все элементы массива? Обработка с переменной: i = 0

Как обработать все элементы массива?

Обработка с переменной:

i = 0
# обработать A[i]
i

+= 1
# обработать A[i]
i += 1
# обработать A[i]
i += 1
# обработать A[i]
i += 1
# обработать A[i]

i += 1

Обработка в цикле:

i = 0
while i < N:
# обработать A[i]
i += 1

Цикл с переменной:

for i in range(N):
# обработать A[i]

Слайд 15

Перебор элементов Общая схема (можно изменять A[i]): for i in range(N):

Перебор элементов

Общая схема (можно изменять A[i]):

for i in range(N):
... #

сделать что-то с A[i]

Если не нужно изменять A[i]:

for x in A:
... # сделать что-то с x

for i in range(N):
A[i] += 1

x = A[0], A[1], ..., A[N-1]

for x in A:
print ( x )

Слайд 16

Что выведет программа? A = [2, 3, 1, 4, 6, 5]

Что выведет программа?

A = [2, 3, 1, 4, 6, 5]

print( A[3]

)

print( A[0]+2*A[5] )

A[1] = A[0] + A[5]
print( 3*A[1]+A[4] )

# 4

# 12

# 7

# 27

A[2] = A[1]*A[4]
print( 2*A[1]+A[2] )

# 18

# 22

for k in range(6):
A[k] += 2
print( 2*A[3]+3*A[4] )

# 36

# [4,5,3,6,8,7]

Слайд 17

Подсчёт нужных элементов Задача. В массиве записаны данные о росте баскетболистов.

Подсчёт нужных элементов

Задача. В массиве записаны данные о росте баскетболистов. Сколько

из них имеет рост больше 180 см, но меньше 190 см?

count = 0
for x in A:
if 180 < x and x < 190:
count += 1

Слайд 18

Перебор элементов summa = 0 for x in A: if x

Перебор элементов

summa = 0
for x in A:
if x % 2

== 0:
summa += x
print ( summa )

B = [x for x in A
if x % 2 == 0]
print ( sum(B) )

или так:

Задача. Найти сумму чётных элементов массива.

сумма массива B

Слайд 19

Как работает цикл? summa = 0 for x in A: if

Как работает цикл?

summa = 0
for x in A:
if x %

2 == 0:
summa += x

A

x

summa

4

3

6

8

1

0

4

10

18

Слайд 20

Среднее арифметическое count = 0 summa = 0 for x in

Среднее арифметическое

count = 0
summa = 0
for x in A:
if x

% 10 == 5:
count += 1
summa += x
print ( summa/count )

среднее арифметическое

или так:

B = [ x for x in A ]
if x % 10 == 5]
print ( sum(B)/len(B) )

отбираем нужные

Задача. Найти среднее арифметическое элементов массива, которые оканчиваются на цифру 5.

Слайд 21

Пример № 6 Сформировать и вывести целочисленный массив размера N, содержащий

Пример № 6 Сформировать и вывести целочисленный массив размера N, содержащий N первых положительных нечетных

чисел: 1, 3, 5, … .
Слайд 22

Задачи «3»: Введите массив из 5 элементов с клавиатуры и найдите

Задачи

«3»: Введите массив из 5 элементов с клавиатуры и найдите среднее

арифметическое его значений.
Пример:
Массив:
1 2 3 4 5
Среднее арифметическое 3.000

«4»: Заполните массив из 10 элементов случайными числами в интервале [0,100] и подсчитайте отдельно среднее значение всех элементов, которые <50, и среднее значение всех элементов, которые ≥50.
Пример:
Массив:
3 2 52 4 60 50 1 2 60 58 6
Ср. арифм. элементов < 50: 3.000
Ср. арифм. элементов >=50: 56.000

Слайд 23

Самостоятельно: 1. Дано целое число N (> 0). Сформировать и вывести

Самостоятельно:

1. Дано целое число N (> 0). Сформировать и вывести целочисленный массив размера N, содержащий

степени двойки от первой до N-й: 2, 4, 8, 16, … .
Ввод: 7
Вывод: 2 4 8 16 32 64 128
2. Дано целое число N (> 1), а также первый член A и разность D арифметической прогрессии. Сформировать и вывести массив размера N, содержащий N первых членов данной прогрессии:
A,  A + D,  A + 2·D,  A + 3·D,
Ввод: 4 1.14 3.04
Вывод: 1.14 4.18 7.23 10.27
Слайд 24

Самостоятельно: 3. Выведите значение наименьшего из всех положительных элементов в списке.

Самостоятельно:

3. Выведите значение наименьшего из всех положительных элементов в списке. Известно,

что в списке есть хотя бы один положительный элемент, а значения всех элементов списка по модулю не превосходят 1000.
Ввод: 5 -4 3 -2 1
Вывод: 1
4. Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.
Ввод: 1 5 2 4 3
Вывод : 5 4
5*. Дан список. Выведите те его элементы, которые встречаются в списке только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.
Ввод: 2 5 2 4 4 3 2
Вывод : 5 3