Главная страница
Навигация по странице:

  • Для инициализации элементов матрицы

  • Упражнение 1. Написать программу поиска минимального и максимального элементов матрицы и их индексов.Упражнение 2.

  • Упражнение 3. Введите с клавиатуры двумерный список целых чисел размером N*N и вычислите сумму элементов каждого столбца.Упражнение 4 .

  • Упражнение 5 .

  • Л_работа_8_Двумерные списки. Лабораторная работа 7. Двумерные списки в питоне


    Скачать 0.57 Mb.
    НазваниеЛабораторная работа 7. Двумерные списки в питоне
    Дата25.01.2023
    Размер0.57 Mb.
    Формат файлаdocx
    Имя файлаЛ_работа_8_Двумерные списки.docx
    ТипЛабораторная работа
    #904735

    ЛАБОРАТОРНАЯ РАБОТА №7. ДВУМЕРНЫЕ СПИСКИ В ПИТОНЕ


    1. Обработка и вывод вложенных списков

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

    Приведем программу, в которой создается числовая таблица из двух строк и трех столбцов, с которой производятся различные действия.

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

    print(a[0])

    print(a[1])

    b = a[0]

    print(b)

    print(a[0][2])

    a[0][1] = 7

    print(a)

    print(b)

    b[2] = 9

    print(a[0])

    print(b)

    Здесь первая строка списка a[0] является списком из чисел [1, 2, 3] .

    То есть a[0] [0] == 1 , значение a[0][1] == 2 , a[0][2] == 3 ,

    a[1][0] == 4 , a[1][1] == 5 , a[1][2] == 6 .


    Для обработки и вывода списка используют два вложенных цикла.

    Первый цикл перебирает номер строки, второй цикл бежит по элементам внутри строки. Например, вывести двумерный числовой список на экран построчно, разделяя числа пробелами внутри одной строки, можно так:

    Подсчет суммы всех чисел в списке:


    Или то же самое с циклом не по индексу, а по значениям строк:

    2. Создание вложенных списков

    Первый способ: сначала создадим список из n элементов (для начала просто из n нулей). Затем сделаем каждый элемент списка ссылкой на другой одномерный список из m элементов:

    n = 3

    m = 4

    a = [0] * n

    for i in range(n):

    a[i] = [0] * m


    Второй способ: создать пустой список, потом n раз добавить в него новый элемент, являющийся списком-строкой:

    n = 3

    m = 4

    a = []

    for i in range(n):

    a.append([0] * m)


    Третий способ: создать список из n элементов, каждый из которых будет списком, состоящих из m нулей:

    n = 3

    m = 4

    a = [[0] * m for i in range(n)]

    В этом случае каждый элемент создается независимо от остальных (заново конструируется список [0] * m для заполнения очередного элемента списка), а не копируются ссылки на один и тот же список.


    3. Ввод двумерного массива

    Пусть программа получает на вход двумерный массив в виде n строк, каждая из которых содержит m чисел, разделенных пробелами.

    Первый способ:

    # в первой строке ввода - количество строк массива

    n = int(input())

    a = []

    for i in range(n):

    a.append([int(j) for j in input().split()])


    Второй способ:

    n = int(input())

    a = []

    for i in range(n):

    row = input().split()

    for i in range(len(row)):

    row[i] = int(row[i])

    a.append(row)


    Третий способ:

    n = int(input())

    a = [[int(j) for j in input().split()] for i in range(n)]

    Для инициализации элементов матрицы случайными числами используется алгоритм:


    import random

    for i in range(N):

    for j in range(M):

    a[i][j] = random.randint ( 30, 60 )

    print ( "{:4d}".format(a[i][j]), end = "" )

    print()



    4. Пример обработки двумерного массива

    Пусть дан квадратный массив из n строк и n столбцов. Необходимо элементам, находящимся на главной диагонали присвоить значение 1 , элементам, находящимся выше главной диагонали – значение 0, элементам, находящимся ниже главной диагонали – значение 2.

    То есть необходимо получить такой массив (пример для n==4 ):

    1 0 0 0

    2 1 0 0

    2 2 1 0

    2 2 2 1


    Первый способ:

    Элементы выше главной диагонали – это элементы a[i][j] , для которых i

    а для элементов ниже главной диагонали i>j .

    Данный алгоритм выполняет одну или две инструкции if для обработки каждого элемента.


    Второй способ:

    Сначала заполним главную диагональ, для чего нам понадобится один цикл

    for i in range(n):

    a[i][i] = 1

    Затем заполним значением 0 все элементы выше главной диагонали, для чего нам понадобится в каждой из строк с номером i присвоить значение элементам a[i][j] для j = i+1 , ..., n-1 . Здесь нам понадобятся вложенные циклы

    for i in range(n):

    for j in range(i + 1, n):

    a[i][j] = 0

    Аналогично присваиваем значение 2 элементам a[i][j] для j = 0 , ..., i-1 :

    for i in range(n):

    for j in range(0, i):

    a[i][j] = 2


    Третий способ:


    5. Вложенные генераторы двумерных массивов

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

    Напомним, что сделать список из n строк и m столбцов можно при помощи генератора, создающего список из n элементов, каждый элемент которого является списком из m нулей: [[0] * m for i in range(n)]

    Но при этом внутренний список также можно создать при помощи, например, такого генератора:

    [0 for j in range(m)] .

    Вложив один генератор в другой, получим вложенные генераторы:

    [[0 for j in range(m)] for i in range(n)]


    Но если число 0 заменить на некоторое выражение, зависящее от i (номер строки) и j (номер столбца), то можно получить список, заполненный по некоторой формуле.

    Например, пусть нужно задать следующий массив:

    0 0 0 0 0 0

    0 1 2 3 4 5

    0 2 4 6 8 10

    0 3 6 9 12 15

    0 4 8 12 16 20

    В этом массиве n = 5 строк, m = 6 столбцов, и элемент в строке i и столбце j вычисляется по формуле: a[i][j] = i * j .

    Для создания такого массива можно использовать генератор:

    [[i * j for j in range(m)] for i in range(n)]



    Упражнение 1.

    Написать программу поиска минимального и максимального элементов матрицы и их индексов.
    Упражнение 2.

    Написать программу, выводящую на экран строку двумерного списка, сумма элементов которой максимальна.
    Упражнение 3.

    Введите с клавиатуры двумерный список целых чисел размером N*N и вычислите сумму элементов каждого столбца.


    Упражнение 4.

    Дан целочисленный массив размером N*N. Найти наименьший элемент массива и сообщить его расположение относительно правой диагонали.
    Упражнение 5.

    Найти минимальный элемент среди максимальных элементов столбцов двумерного массива целых чисел. Определить номер строки и столбца такого элемента.


    написать администратору сайта