Similar presentations:
Двумерные массивы
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, 2a = []
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()