Массивы в Python
Массив — это структура данных, в которой хранятся значения одного типа. В Python это основное различие между массивами и списками.
Хотя списки Python могут содержать значения, соответствующие разным типам данных, массивы в Python могут содержать только значения, соответствующие одному и тому же типу данных. В этом уроке мы разберемся с массивами Python на нескольких примерах.
Если вы новичок в Python, начните со статьи Введение в Python.
Для использования массивов в языке Python, вам нужно импортировать стандартный array модуль. Это потому , что массив не является основным типом данных , как строки, целое число и т.д. Вот как вы можете импортировать array модуля в Python:
from array import *
После того, как вы импортировали array модуль, вы можете объявить массив. Вот как вы это делаете:
arrayIdentifierName = array(typecode, [Initializers])
В приведенном выше объявлении, arrayIdentifierName этого имя массива, typecode позволяет питону знать тип массива и Initializers являются значением , с которыми массив инициализируется.
Typecodes — это коды, которые используются для определения типа значений массива или типа массива. Таблица в разделе параметров показывает возможные значения, которые вы можете использовать при объявлении массива, и его тип.
Вот реальный пример объявления массива python:
my_array = array('i',[1,2,3,4])
В приведенном выше примере, используется TypeCode i .Этот тип-тип представляет целое число со знаком, размер которого составляет 2 байта.
Вот простой пример массива, содержащего 5 целых чисел
Доступ к отдельным элементам через индексы
Отдельные элементы могут быть доступны через индексы. Массивы Python индексируются нулем. Вот пример:
Добавить любое значение в массив с помощью метода append()
Заметим , что значение 6 был приложен к существующим значениям массива.
Вставить значение в массив с помощью метода insert()
Мы можем использовать insert() метод , чтобы вставить значение в любом индекса массива. Вот пример:
В приведенном выше примере значение 0 было вставлено в индекс 0. Обратите внимание, что первый аргумент является индексом, а второй аргумент является значением.
Расширение массива python с помощью метода extend()
Массив Python может быть расширен с более чем одно значение с помощью extend() метод. Вот пример:
Мы видим , что my_array массив был расширен со значениями из my_extnd_array .
Добавить элементы из списка в массив, используя метод fromlist()
Итак , мы видим , что значения 11,12 и 13 были добавлены из списка c к my_array .
Удалите любой элемент массива, используя метод remove()
Мы видим, что элемент 4 был удален из массива.
Удалить последний элемент массива методом pop()
pop удаляет последний элемент из массива. Вот пример:
Итак , мы видим , что последний элемент ( 5 ) был выскочили из массива.
Получить любой элемент через его индекс с помощью метода index()
index() возвращает первый индекс значения соответствия. Помните, что массивы с нулевой индексацией.
Обратите внимание, что во втором примере был возвращен только один индекс, хотя в массиве значение существует дважды
Обратный массив Python, используя метод reverse()
reverse() метод делает то , что название говорит , что это будет делать — изменяет массив. Вот пример:
Получить информацию о буфере массива с помощью метода buffer_info()
Этот метод предоставляет вам начальный адрес буфера массива в памяти и количество элементов в массиве. Вот пример:
my_array = array('i', [1,2,3,4,5]) my_array.buffer_info() #(33881712, 5)
Проверьте количество вхождений элемента с помощью метода count()
count() — count() возвращает число раз , и представляется , что элемент в массиве. В следующем примере мы видим , что значение 3 происходит дважды.
my_array = array('i', [1,2,3,3,5]) my_array.count(3) # 2
Преобразовать массив в строку, используя метод tounicode()
tounicode() преобразует юникод массив в строку.
my_char_array = array('u', ['g','e','e','k']) # array('u', 'geek') print(my_char_array.tounicode()) # geek
Преобразовать массив в список Python с теми же элементами, используя метод tolist()
Когда вам нужен Python list объектов, вы можете использовать tolist() метод , чтобы преобразовать ваш массив в список.
my_array = array('i', [1,2,3,4,5]) c = my_array.tolist() # [1, 2, 3, 4, 5]
Потренируйте самостоятельно
Поздравляем! Тепереь вы можете работать с массивами в Python.
Как ввести массив с клавиатуры?
Как вводить элементы массива с клавиатуры? Задание: Дан массив целых чисел. Найти сумму и произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
l = [1, 4, 0, 3, 2, 7, 3, 1, 0, 34] t, c, k = 1, 0, 0 for i in l: if i == 0: if k == 1: break k = 1 continue if k == 1: t *= i c += i print(t) print(c)
Отслеживать
задан 13 мая 2019 в 18:57
17 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Ввод чисел через пробел:
my_list = [int(el) for el in input().split()]
Первый и второй ноль можно найти через index (проверка на вхождение обоих нулей — count(0)):
first = my_list.index(0) second = my_list.index(0, first + 1)
s = sum(q[first+1:second])
from functools import reduce mul = reduce(lambda x, y: x*y, q[first+1:second])
Массив в Python
В этой статье мы разберем, что такое массив в Python и как его использовать. Вы узнаете, как определять массивы и какие методы обычно используются для выполнения различных операций над ними.
Важно отметить, что в данной статье рассматриваются массивы, которые можно создать путем импорта модуля array . Массивы NumPy мы здесь рассматривать не будем.
Итак, мы разберем следующие темы:
- Введение в массивы
- Основные различия между списками и массивами
- Когда нужно использовать массивы
- Как использовать массив в Python
- Определение массива
- Поиск длины массива
- Индексация массива
- Поиск элементов в массиве
- Использование циклов с массивами
- Срезы массивов
- Методы массивов для выполнения различных операций
- Изменение существующего значения
- Добавление нового значения
- Удаление значения
- Заключение
Что ж, давайте приступать!
Что такое массив в Python?
Массив — это фундаментальная структура данных и важная часть большинства языков программирования. В Python массивы — это контейнеры, способные хранить более одного элемента одновременно.
В частности, они представляют собой упорядоченный набор элементов, каждое значение которого относится к одному и тому же типу данных. Это самое важное, что нужно помнить о массивах в Python. Они могут содержать последовательность нескольких элементов только одного типа.
В чем разница между списками и массивами в Python?
Списки — одна из наиболее распространенных структур данных в Python и основная часть языка.
Списки и массивы ведут себя сходным образом.
Как и массивы, списки представляют собой упорядоченную последовательность элементов.
Они также изменяемы и не имеют фиксированного размера, то есть могут увеличиваться и уменьшаться на протяжении всей жизни программы. Элементы можно добавлять и удалять, что делает списки очень гибкими в работе.
Однако списки и массивы — это не одно и то же.
В списках могут храниться элементы различных типов данных. Это означает, что список может одновременно содержать целые числа, числа с плавающей запятой, строки или любой другой тип данных Python. С массивами это не сработает.
Как уже упоминалось, массивы хранят элементы только какого-то одного типа данных. Это важно помнить! Есть массивы целых чисел, массивы чисел с плавающей запятой и т.д.
Когда следует использовать массивы в Python
Списки встроены по умолчанию в язык программирования Python, а массивы — нет. Поэтому, если вы хотите использовать массивы, их сперва нужно импортировать через модуль array .
Массивы модуля array представляют собой тонкую обертку массивов в C. Они полезны, когда вам нужно работать с однородными данными.
Они также более компактны и занимают меньше памяти и места, что делает их более эффективными по сравнению со списками.
Если вы хотите выполнять математические вычисления, лучше воспользоваться массивами NumPy, импортировав модуль NumPy.
Стоит отметить, что использовать массивы в Python следует только тогда, когда вам это действительно нужно, ведь списки работают аналогичным образом и более гибки в работе.
Как использовать массивы в Python
Чтобы создавать массивы в Python, вам сначала нужно импортировать модуль array , который содержит все необходимые для работы функции.
Импортировать модуль массива можно тремя способами:
1. Использовать import array в верхней части файла. Это позволит нам подключить модуль array . После чего мы сможем создать массив, используя array.array() .
import array # Создание массива array.array()
2. Чтобы не вводить постоянно array.array() , можно прописать import array as arr в верхней части файла вместо просто import array . После чего для создания массива нужно будет набрать arr.array() . Arr действует как псевдоним, после которого сразу следует конструктор для создания массива.
import array as arr # Создание массива arr.array()
3. Наконец, вы также можете использовать from array import * , где с помощью * импортируются все доступные функции данного модуля. В таком случае, чтобы создать массив, нужно написать просто array() .
from array import * # Создание массива array()
Как определить массив в Python
После того, как вы импортировали модуль array, вы можете перейти к непосредственному созданию массива Python.
Общий синтаксис создания массива выглядит следующим образом:
variable_name = array(typecode,[elements])
Давайте разберем синтаксис подробнее:
- variable_name будет именем массива
- typecode указывает, какие элементы будут храниться в массиве. Это может быть массив целых чисел, массив чисел с плавающей запятой или массив любого другого типа данных в Python. Но помните, что все элементы должны быть одного типа данных.
- Внутри квадратных скобок вы указываете элементы, которые будут храниться в массиве, при этом каждый элемент отделяется запятой. Вы также можете создать пустой массив, просто написав variable_name = array(typecode) без каких-либо элементов.
Ниже приведена таблица кодов для различных типов данных.
| TYPECODE | Тип в C | Тип в Python | Размер |
|---|---|---|---|
| ‘b’ | signed char | int | 1 |
| ‘B’ | unsigned char | int | 1 |
| ‘u’ | wchar_t | Unicode character | 2 |
| ‘h’ | signed short | int | 2 |
| ‘H’ | unsigned short | int | 2 |
| ‘i’ | signed int | int | 2 |
| ‘I’ | unsigned int | int | 2 |
| ‘l’ | signed long | int | 4 |
| ‘L’ | unsigned long | int | 4 |
| ‘q’ | signed long long | int | 8 |
| ‘Q’ | unsigned long long | int | 8 |
| ‘f’ | float | float | 4 |
| ‘d’ | double | float | 8 |
Создание массива на практике
Вот пример того, как можно определить массив в Python:
import array as arr numbers = arr.array('i',[10,20,30]) print(numbers) #output #array('i', [10, 20, 30])
Давайте разберем, что мы только что сделали.
Сначала мы подключили модуль array , в данном случае с помощью import array as arr .
Затем мы создали массив чисел.
Мы использовали arr.array() , так как arr это наш псевдоним для модуля.
Внутри конструктора array() мы сначала указали i для целых чисел. Это означает, что массив может включать как положительные, так и отрицательные значения. Если бы мы, например, указали H , это бы означало, что отрицательные значения не допускаются.
Наконец, мы перечислили значения, которые будут храниться в массиве, в квадратных скобках.
Имейте в виду, что если вы попытаетесь включить значения, тип которых не соответствует коду i , то есть не целочисленные значения, вы получите сообщение об ошибке:
import array as arr numbers = arr.array('i',[10.0,20,30]) print(numbers) #output #Traceback (most recent call last): # File "/Users/dionysialemonaki/python_articles/demo.py", line 14, in # numbers = arr.array('i',[10.0,20,30]) #TypeError: 'float' object cannot be interpreted as an integer
В этом примере мы попытались включить в массив число с плавающей запятой. И получили ошибку, потому что это целочисленный массив.
Другой способ создания массива:
from array import * # Массив чисел с плавающей запятой numbers = array('d',[10.0,20.0,30.0]) print(numbers) #output #array('d', [10.0, 20.0, 30.0])
В этом примере модуль массива был импортирован через from array import * . Затем был создан массив чисел с типом данных float . Это означает, что он содержит только числа с плавающей запятой, которым соответствует код d .
Как найти длину массива в Python
Чтобы узнать точное количество элементов, содержащихся в массиве, можно использовать встроенный метод len() .
Он вернет вам целое число, равное общему количеству элементов в указанном вами массиве.
import array as arr numbers = arr.array('i',[10,20,30]) print(len(numbers)) #output # 3
В этом примере массив содержал три элемента — 10 , 20 , 30 . Поэтому длина массива равна 3.
Индексация массива и доступ к отдельным элементам
Каждый элемент массива имеет определенный адрес. Доступ к отдельным элементам осуществляется путем ссылки на их порядковый номер.
Индексация в Python, как и во всех языках программирования, и вычислениях в целом начинается с 0, а не с 1. Об этом важно помнить.
Чтобы получить доступ к элементу, вы сначала пишете имя массива, за которым следуют квадратные скобки. Внутри квадратных скобок вы указываете индекс нужного элемента.
Общий синтаксис будет выглядеть так:
array_name[index_value_of_item]
Вот так можно получить доступ к каждому отдельному элементу в массиве:
import array as arr numbers = arr.array('i',[10,20,30]) print(numbers[0]) # Получение 1-го элемента print(numbers[1]) # Получение 2-го элемента print(numbers[2]) # Получение 3-го элемента #output #10 #20 #30
Помните, что значение индекса последнего элемента массива всегда на единицу меньше, чем длина массива. Если n — длина массива, то значением индекса последнего элемента будет n-1 .
Обратите внимание, что вы также можете получить доступ к каждому отдельному элементу, используя отрицательную индексацию.
При отрицательной индексации последний элемент будет иметь индекс -1, предпоследний элемент — -2 и так далее.
К примеру, получить каждый элемент массива можно следующим образом:
import array as arr numbers = arr.array('i',[10,20,30]) print(numbers[-1]) # Получение последнего элемента print(numbers[-2]) # Получение предпоследнего элемента print(numbers[-3]) # Получение первого элемента #output #30 #20 #10
Как искать элемент в массиве в Python
Вы можете узнать порядковый номер элемента с помощью метода index() .
В качестве аргумента метода вы передаете значение искомого элемента, и вам возвращается его индекс.
import array as arr numbers = arr.array('i',[10,20,30]) # Поиск индекса элемента со значением 10 print(numbers.index(10)) #output #0
Если имеется более одного элемента с указанным значением, будет возвращен индекс элемента, который встречается первым. К примеру, это может выглядеть так:
import array as arr numbers = arr.array('i',[10,20,30,10,20,30]) # Поиск индекса элемента со значением 10 # Возвращается индекс первого из двух элементов со значением 10 print(numbers.index(10)) #output #0
Как перебрать массив в Python с помощью цикла
Мы рассмотрели, как получить доступ к каждому отдельному элементу массива и распечатать элементы по отдельности.
Вы также видели, как распечатать массив с помощью метода print() . Этот метод дает следующий результат:
import array as arr numbers = arr.array('i',[10,20,30]) print(numbers) #output #array('i', [10, 20, 30])
Но что делать, если вы хотите вывести значения одно за другим?
Здесь на помощь приходит цикл. Вы можете идти по массиву и распечатывать значения одно за другим с каждой новой итерацией цикла. Подробнее о циклах в Python можно почитать в статье «Pythonic циклы».
К примеру, для решения нашей задачи вы можете использовать простой цикл for :
import array as arr numbers = arr.array('i',[10,20,30]) for number in numbers: print(number) #output #10 #20 #30
Вы также можете использовать функцию range() и передать метод len() в качестве ее параметра. Это даст тот же результат:
import array as arr values = arr.array('i',[10,20,30]) # Распечатка всех значений массива по отдельности for value in range(len(values)): print(values[value]) #output #10 #20 #30
Как использовать срезы с массивами в Python
Чтобы получить доступ к определенному диапазону значений внутри массива, используйте оператор среза (двоеточие : ).
Если, используя срез, вы укажете только одно значение, отсчет по умолчанию начнется с 0. Код получает первый элемент (с индексом 0) и идет до элемента с указанным вами индексом, но не захватывает его.
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) # Получение только значений 10 и 20 print(numbers[:2]) # С первой по вторую позицию (индексы 0 и 1) #output #array('i', [10, 20])
Когда вы передаете два числа в качестве аргументов, вы указываете диапазон индексов. В этом случае отсчет начинается с первого указанного вами индекса и идет до второго, не включая его:
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) # Получение только значений 20 и 30 print(numbers[1:3]) # Со второй по третью позицию #output #array('i', [20, 30])
Методы выполнения операций с массивами в Python
Массивы изменчивы, это означает, что мы можем менять их элементы самым разным образом. Можно изменить значение элементов, добавить новые или удалить те, которые вам больше не нужны в вашей программе.
Давайте рассмотрим несколько методов, наиболее часто используемых для выполнения операций с массивами.
Изменение значения элемента в массиве
Вы можете изменить значение определенного элемента, указав его позицию (индекс) и присвоив ему новое значение. Сделать это можно так:
import array as arr #original array numbers = arr.array('i',[10,20,30]) # Изменение первого элемента # Меняется значение с 10 на 40 numbers[0] = 40 print(numbers) #output #array('i', [40, 20, 30])
Добавление нового значения в массив
Чтобы добавить одно значение в конец массива, используйте метод append() :
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) # В конец numbers добавляется целое число 40 numbers.append(40) print(numbers) #output #array('i', [10, 20, 30, 40])
Имейте в виду, что новый элемент, который вы добавляете, должен иметь тот же тип данных, что и остальные элементы в массиве.
Посмотрите, что произойдет, если мы пытаемся добавить число с плавающей запятой в массив целых чисел:
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) # В конец numbers добавляется число с плавающей запятой 40.0 numbers.append(40.0) print(numbers) #output #Traceback (most recent call last): # File "/Users/dionysialemonaki/python_articles/demo.py", line 19, in # numbers.append(40.0) #TypeError: 'float' object cannot be interpreted as an integer
Но что, если вы хотите добавить более одного значения в конец массива?
Тогда используйте метод extend() , который принимает итерируемый объект (например, список элементов) в качестве аргумента. Опять же, убедитесь, что все новые элементы имеют один и тот же тип данных.
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) # Добавление целых чисел 40,50,60 в конец numbers # Числа берутся в квадратные скобки numbers.extend([40,50,60]) print(numbers) #output #array('i', [10, 20, 30, 40, 50, 60])
А что, если вы хотите добавить элемент не в конец массива? В таком случае используйте метод insert() : он позволяет добавить элемент на определенную позицию.
Функция insert() принимает два аргумента: индекс позиции, на которую будет вставлен новый элемент, и значение нового элемента.
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) # Добавление целого числа 40 на первую позицию # Помните, что индексация начинается с 0 numbers.insert(0,40) print(numbers) #output #array('i', [40, 10, 20, 30])
Удаление значения из массива
Чтобы удалить элемент из массива, используйте метод remove() и укажите значение элемента в качестве аргумента.
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30]) numbers.remove(10) print(numbers) #output #array('i', [20, 30])
С помощью remove() будет удален только первый экземпляр значения, которое вы передаете в качестве аргумента.
Посмотрите, что происходит, когда имеется несколько элементов с одинаковым значением:
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30,10,20]) numbers.remove(10) print(numbers) #output #array('i', [20, 30, 10, 20])
Удаляется только первое вхождение числа 10 .
Вы также можете использовать метод pop() и указать позицию удаляемого элемента:
import array as arr # Исходный массив numbers = arr.array('i',[10,20,30,10,20]) # Удаление первого вхождения 10 numbers.pop(0) print(numbers) #output #array('i', [20, 30, 10, 20])
Заключение
Вот и все — теперь вы знаете, что такое массив в Python, как его создать с помощью модуля array и какие есть методы для работы с ним. Надеемся, это руководство было вам полезно.
Спасибо за чтение и успехов в написании кода!
Ввод в массив функции python
Следущий код удаляет не уникальные элементы из массива. Однако хочется реализовать его через функцию и вводить элементы из клавиатуры или через вызов функции.
array = [1,3,2,3,6,7,4] sorted = array[:] for i in array: if array.count(i) == 1: array.remove(i) print(sorted)
UPD: Спасибо всем за советы! Вроде получилось как хотел:
def func(data): data = input().split() e = data[:] for i in data: if data.count(i) == 1: e.remove(i) print(e) return e func(print())
Отслеживать
задан 28 июн 2014 в 20:50
23 1 1 серебряный знак 4 4 бронзовых знака
new_array = [i for i in array if array.count(i) > 1] как переписать эту строку в столбец? Блоки остаются?
28 июн 2014 в 22:16
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Еще один вариант решения:
data_list = [] while True: num = raw_input(">") if num == "": break else: data_list.append(num) continue def sort_list(mylist): result_list = [] for num in mylist: if num in result_list: continue else: result_list.append(num) return result_list print sort_list(data_list)
>1 >2 >1 >6 > ['1', '2', '6']
Отслеживать
ответ дан 28 июн 2014 в 21:12
WorldCount WorldCount
799 5 5 серебряных знаков 12 12 бронзовых знаков
Не понятно назначение sort_list — ТС просит о другом: надо удалить те элементы, которые встречаются только 1 раз. Т.е. в вашем случае надо было оставить только две единицы.
28 июн 2014 в 21:16
ТС вроде как функцией сделать просил, нет? Да и пишет: «Следущий код удаляет не уникальные элементы из массива.» Мой код это и делает, а вот что делает его код, мне до сих пор не понятно.
28 июн 2014 в 21:18
Ну если пример КАК сделать функцией — то пойдет) А если пример самой функции — то нет) Просто не понятно — то ли вы специально так написали, то ли задачу не поняли)
28 июн 2014 в 21:25
Ну видимо не понял задачи. Ибо ТС написал что код удаляет НЕ уникальные значения. Это я и написал, а выходит что надо было сделать на оборот.
28 июн 2014 в 21:36
while True цикл можно заменить на items = iter(lambda: raw_input(‘>’), ») (где raw_input = input так как код в вопросе похож на Питон 3). Вместо sort_list() , чтобы удалить повторы: uniq = set(items) .
24 янв 2017 в 15:40
def sort_list(mylist): result_list = [] for num in mylist: if num in result_list: continue else: result_list.append(num) return result_list
def sort_list(mylist): return list(set(mylist))
Отслеживать
ответ дан 29 июн 2014 в 4:49
Александр Молофеев Александр Молофеев
2,346 14 14 серебряных знаков 19 19 бронзовых знаков
Для 2.7:
1. Ввод с клавиатуры:
array = raw_input().split()
вводим числа разделенные пробелом — получаем массив чисел (точнее — строк, которые можно привести к числам через map )
2. удалять из того же массива по которому проходишь — вроде как не есть хорошо, лучше либо сохранять копию и удалять из нее, либо помещать удаляемые элементы в другой массив, а потом удалять из исходного все сохраненные элементы,
Можно сделать так:
new_array = [i for i in array if array.count(i) > 1]
new_array будет содержать не уникальные элементы
Ну так что мешает эту конструкцию обернуть в функцию? Первую часть вы тем более уже написали:
def func(data): . # здесь мой код с заменой array на data return new_array
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 28 июн 2014 в 21:04
4,855 2 2 золотых знака 25 25 серебряных знаков 51 51 бронзовый знак
Спасибо! А как можно привести к функции типа: def func(data): . return func([1,2,5,5,2]) upd. В комментах нет подвески кода, я имею вышеуказанный пример сделать функцией и вызвать её с аргументам
28 июн 2014 в 21:13
автор просит удалить элементы, которые более одного раза встречаются. У вас код обратное делает, используя квадратичный алгоритм. new_array = set(array) убирает повторы (линейное время).
24 янв 2017 в 15:45
@jfs, автор просит одно, в коде у него совсем другое (в том числе, в том, который в вопросе как правильный отмечен), я ориентировался на код )). И set здесь не сработает, т.к. set([1,1,2]) вернет [1,2], а надо только 1 (т.к. 2 встречается только 1 раз), либо 2 (т.к. 1 встречается несколько раз). Если гнаться за линейностью, то можно создать словарь, в котором ключи — элементы, а значения — количество повторов. Первый проход — заполняем словарь, второй проход — создаем список из словаря, где количество элементов равно 1
25 янв 2017 в 7:19
@BOPOH я знаю что set делает и явно уже это сказал: «убирает повторы» (aba -> ab) 1- что по вашему sort_list в принятом ответе делает? 2- у вас код похож на «получилось как хотел» код в вопросе (aba-> a — сохраняет не уникальные элементы), но автор вероятно не понимает, что код именно это делает (принятый ответ содержит явно результаты (1216->126)—не требует понимания кода). 3- не предлагайте квадратичный алгоритм вместо линейного если заранее неизвестно что ввод маленький или по меньшей мере упомяните явно O(n**2) (я не сомневаюсь что вы можете линейный алгоритм найти).
