from random import randint




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

 

Основное предназначение современных компьютеров – обработка большого количества данных. При этом надо как-то обращаться к каждой из тысяч (или даже миллионов) ячеек с данными. Очень сложно дать каждой ячейке собственное имя и при этом не запутаться. Из этой ситуации выходят так: дают имя не ячейке, а группе ячеек, в которой каждая ячейка имеет собственный номер. Такая область памяти называется массивом (или таблицей).

 

 

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

 

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

 

В языке Python нет такой структуры как «массив». Вместо этого для хранения группы однотипных объектов используют списки (тип данных list).

 

Список в Python – это набор элементов, каждый из которых имеет свой номер (индекс). Нумерация всегда начинается с нуля (как в Си-подобных языках), второй по счёту элемент имеет но-мер 1 и т.д. В отличие от обычных массивов в большинстве языков программирования список – это динамическая структура, его размер можно изменять во время выполнения программы (удалять и добавлять элементы), при этом все операции по управлению памятью берёт на себя транслятор.

 

Список можно создать перечислением элементов через запятую в квадратных скобках, на-пример, так:

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

 

Списки можно «складывать» с помощью знака «+», например, показанный выше список можно было построить так:

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

 

Сложение одинаковых списков заменяется умножением «* ». Вот так создаётся список из 10 эле-ментов, заполненный нулями:

A = [0]*10

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

 

A =[ i for i in range(10) ]

 

Как вы знаете, цикл for i in range(10) перебирает все значения i от 0 до 9. Выражение перед словом for (в данном случае – i) – это то, что записывается в очередной элемент списка для каждого i. В приведённом примере список заполняется значениями, которые последовательно принимает переменная i, то есть получим такой список:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

То же самое можно получить, если использовать функцию list для того, чтобы создать список из данных, которые получаются с помощью функции range:

A = list (range(10))

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

 

A =[ i*i for i in range(10)]

 

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

 

A = [ i for i in range(100) if isPrime(i) ]

 

Здесь isPrime – логическая функция, которая определяет простоту числа (см. § 60.).

 

Часто в тестовых и учебных программах массив заполняют случайными числами. Это тоже

 

можно сделать с помощью генератора:

from random import randint

 

 

A = [ randint(20,100) for x in range(10)]

 

Здесь создается массив из 10 элементов и заполняется случайными числами из отрезка [20,100].

Для этого используется функция randint, которая импортируется из модуля random.

Длина списка (количество элементов в нём) определяется с помощью функции len:

N = len(A)

 

 

Ввод и вывод массива

 

Далее во всех примерах мы будем считать, что в программе создан список A, состоящий из N элементов(целых чисел).В этом списке хранится массив данных,поэтому под выражением«массив» мы будем подразумевать «однотипные данные, хранящиеся в виде списка». Перемен-ная i будет обозначать индекс элемента списка.

 

Чтобы ввести значения элементов массива с клавиатуры, нужно использовать цикл:

for i in range(N):

 

print ("A[", i, "]=", sep = "", end = "")

A[i] = int(input())

 

В этом примере перед вводом очередного элемента массива на экран выводится подсказка. На-пример, при вводе 3-го элемента будет выведено «A[3]= ».

 

Если никакие подсказки нам не нужны, создать массив из N элементов и ввести их значения можно с помощью генератора списка:

 

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

 

Здесь на каждом шаге цикла строка, введённая пользователем, преобразуется в целое число с помощью функции int, и это число добавляется к массиву.

Возможен еще один вариант ввода, когда весь массив вводится в одной строке. В этом случае строку, полученную от функции input, нужно «расщепить» на части с помощью метода

split:

data = input()

 

s = data.split()

 

или сразу

s = input().split()

 

Например, если ввести строку "1 2 3 4 5", то после «расщепления» мы получим список

['1', '2', '3', '4', '5']

 

Это список символьных строк. Для того, чтобы построить массив (список), состоящий из целых чи-сел, нужно применить к каждому элементу списка функцию int:

 

A = [ int(x) for x in s ]

 

Вместо генератора можно было использовать функцию map:

A = list(map(int, s))

 

 

Такая запись означает «применить функцию int ко всем элементам списка s и составить из полученных чисел новый список (объект типа list)».

 

Теперь поговорим о выводе массива на экран. Самый простой способ – вывести список как один объект:

Print (A)

 

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

Вывести массива на экран можно и поэлементно

for i in range(N):

 

print (A[i], end = " ")

 

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

Удобно записывать такой цикл несколько иначе:

for x in A:

 

print (x, end = " ")

 

Здесь не используется переменная-индекс i, а просто перебираются все элементы списка: на каждом шаге в переменную x заносится значение очередного элемента массива (в порядке возрастания индексов).

 

Более быстрый способ – построить одну символьную строку, содержащую все элементы массива, и сразу вывести её на экран:

 

print (" ".join([ str(x) for x in A]))

 

Функция join (англ. join – объединить) объединяет символьные строки, используя указанный перед точкой разделитель, в данном случае – пробел. Запись str(x) означает «символьная запись x ».Таким образом,элементы массива записываются через пробел в одну символьную строку,иэта строка затем выводится на экран с помощью функции print.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-06-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: