1.56M
Категория: ПрограммированиеПрограммирование

Двумерные массивы

1.

ДВУМЕРНЫЕ МАССИВЫ
OR
СПИСОК СПИСКОВ
BY СНОВА Я

2.

Теория
Ввод «вручную»
Заполнение определенным образом
Ввод с клавиатуры
Теория

3.

ЧТО ЭТО?
• Если просто, то двумерный список — это
таблица. У каждой ячейки таблицы есть номер
строки
и
номер
столбца.
Т.е. каждая ячейка имеет не один номер, как в
обычном списке, а два: номер строки и номер
столбца.
Поэтому
такие
списки
и
называют
«двумерными». В математике такие структуры
называют
«матрицы».

4.

ЧТО ЭТО?
Массив

некоторых
языках
программирования
также
таблица,
ряд,
матрица) — тип или структура данных в виде
набора компонентов (элементов массива),
расположенных в памяти непосредственно друг
за другом. При этом доступ к отдельным
элементам
массива
осуществляется
с
помощью индексации, то есть через ссылку на
массив с указанием номера (индекса) нужного
элемента. За счёт этого, в отличие от списка,
массив является структурой данных, пригодной для
осуществления произвольного доступа к её
ячейкам.

5.

РАЗМЕРНОСТЬ
• Размерность массива — это количество
индексов,
необходимое
для
однозначной
адресации
элемента
в
рамках
массива[2][3]. Форма или структура массива —
сведения о количестве размерностей и размере
(протяжённость) массива для каждой из
размерностей[4]; может быть представлена
одномерным массивом

6.

СОЗДАЕМ (PYTHON)
ВВОД «ВРУЧНУЮ»
a = [[1,2,3],[4,5,6]]
print(a)
Вывод:

7.

РАЗБИРАЕМ:
• a = [[1,2,3],[4,5,6]]
print(a[0])
print(a[1])
• Что выведу?

8.

РАЗБИРАЕМ:

9.

? ВОПРОС ?
• Как обратиться к конкретному элементу?

10.

! ОТВЕТ !
a = [[1,2,3],[4,5,6]]
print(a[0])
print(a[1])
print(a[0][0],a[0][1],a[0][2])

11.

ЕЩЕ ТЕОРИИ:
a[0] — это вся первая строка. Т.е. по сути, это
элемент списка, который является списком.
len(a) — количество строк
len(a[0]) — количество элементов (столбцов) в
первой строке.

12.

ПРИМЕР:
a = [[1,2,3],[4,5,6]]
print(a[0])
print(a[1])
print(a[0][0],a[0][1],a[0][2])
print(len(a))
print(len(a[0]))

13.

ТЕОРИЯ
Разумеется, что мы не будем заполнять и выводить
это вручную.
Сначала посмотрим на вывод.
Взять все строки по очереди и вывести на экран.

14.

ПРОСТО ДЛЯ ВЫВОДА!!!

15.

ЗАПОЛНЕНИЕ ОПРЕДЕЛЕННЫМ
ОБРАЗОМ
Заполнить и вывести на экран числа от 10 до 99
включительно.

16.

ЗАПОЛНЕНИЕ ОПРЕДЕЛЕННЫМ
ОБРАЗОМ
a = [] #создаем пустой список
k = 10 # просто начальное значение, может быть
любым
for r in range(9): # 9 строк
a.append([]) # создаем пустую строку
for c in range(10): # в каждой строке - 10
элементов
a[r].append(k) # добавляем очередной
элемент в строку
k += 1
# увеличиваем значение
счетчика
for r in a:
print(r)

17.

ЗАПОЛНЕНИЕ 0, 1, 2
Заполнить массив по определенным правилам:
на главной диагонали все элементы = 1, что выше
= 0, а что ниже = 2. на вход дается n – размер
квадратного массива.

18.

ЗАПОЛНЕНИЕ 0, 1, 2
a = []
n=int(input())
for r in range(n):
a.append([])
for c in range(n):
if r==c:
a[r].append('1')
elif r<c:
a[r].append('0')
else:
a[r].append('2')
for r in a:
print(r)

19.

ВВОД С КЛАВИАТУРЫ
n = int(input()) # создаем количество строк!!!
a = [] # создаем пустой список
for i in range(n): # пошли по строкам с 0
row = input().split() # вводим список до Enter
for i in range(len(row)): # цикл, от 0 до количества
row
row[i] = int(row[i]) # перевод в число элемента
списка row
a.append(row) # добавлем в наш список
(массив)
for i in a:
print(i) # вывод на экран

20.

ВВОД С КЛАВИАТУРЫ
n,m=map(int,input().split()) #читаем справа налево!
a = [] # создаем пустой список
for i in range(n): # цикл до n
b = [] # создаем список b
for j in range(m): # цикл до m
b.append(int(input())) # вводим переменную
a.append(b) # записываем в список
for i in range(n): # цикл до n
for j in range(m): # цикл до m
print(int(a[i][j]),end=' ') # выводим элемент
print() # переход на следующую строку

21.

МИНУС ТАКОГО СПОСОБА:

22.

ПРАВИЛЬНОЕ РЕШЕНИЕ ПРОБЛЕМЫ
n,m = map(int,input().split())
a = []
for i in range(n):
row = input().split()
for j in range(m):
row[j] = int(row[j])
a.append(row)
for i in range(n):
for j in range(m):
print(a[i][j], end=' ')
print()

23.

24.

ЗАДАЧА

25.

• n,m = map(int,input().split())
a = []
for i in range(n):
row = input().split()
for j in range(m):
row[j] = int(row[j])
a.append(row)
maxm=a[0][0]
maxi=0
maxj=0
for i in range(n):
for j in range(m):
if a[i][j]>maxm:
maxm=a[i][j]
maxi=i
maxj=j
if a[i][j]==maxm:
if i<maxi:
maxi=i
elif maxi==i:
if j<maxj:
maxj=j
print(maxi,maxj)

26.

ЗАДАЧА
Прочитать массив и вывести его в файл, в
привычном виде:
34
1231
1230
456 3

27.

ТЕКСТОВЫЕ ФАЙЛЫ
• s1 = open('input.txt','r')
t=open('output.txt','w')
f=s1.readline().split()
n=int(''.join(f[0]))
m=int(''.join(f[1]))
print(n,m)
a = []
for i in range(n):
row=s1.readline().split()
for j in range(len(row)):
row[j]=int(row[j])
a.append(row)
print(a)
for i in range(n):
for j in range(m):
t.writelines(str(a[i][j])+' ')
t.write('\n')
s1.close()
t.close()

28.

РАЗБОР ПРОГРАММЫ
• s1 = open('input.txt','r') # открытие файла чтения
t=open('output.txt','w') # открытия файла записи
f=s1.readline().split() #считаывем первую строку
n=int(''.join(f[0]))
m=int(''.join(f[1]))
print(n,m)
a = []
for i in range(n):
row=s1.readline().split()
for j in range(len(row)):
row[j]=int(row[j])
a.append(row)
print(a)
for i in range(n):
for j in range(m):
t.writelines(str(a[i][j])+' ')
t.write('\n')
s1.close()
t.close()
English     Русский Правила