Массивы, они же списки

Замечание: В других языках программирования (например, в Си или C++) слово «список» обозначает довольно сложную в обхождении структуру данных, полное название которой — «связный список», он же linked list. В Python она не используется практически никогда, и термин «список» фактически обозначает «динамический массив»

О массивах вообще

Это и есть массив!

Python:

Кортежи

Списки

Первый (кажется) изменяемый объект в нашем курсе!

Основные алгоритмы

Пример: поиск максимума

Не модифицируйте длину списка — не добавляйте и не удаляйте элементы — пока проходите по нему (например, с помощью for). Всегда делайте новый. Помните: append() дёшев, памяти хватит на двоих, а вот запутаться в плавающих индексах проще простого

Про eval(input())

Функция eval() вычисляет значение выражения, которое передаётся ей в виде строки. То есть она запускает интерпретатор Python (так же, как это делаем мы, когда запускаем программу!).

Например, вот так начинается программа, в которой сказано «Введите через запятую два числа и строку в кавычках»:

Д/З

  1. Прочитать и прощёлкать:
  2. EJudge: PosCount 'Подсчёт Положительных'

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

    Input:

    1, 3, -3, 0, 234, 657
    -2, -4356, -345, 0, -11, -2134123412341234, 0, 0
    777, 2
    how boring!
    Output:

    6
  3. EJudge: NumSearch 'Поиск Числа'

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

    Input:

    123, 2, 777, -8, 2, 100500
    1w21e23qr123rwe34rt5t5
    это кот на клавиатуру 8 раз сел и 22 клавиши нажал!
    777777 7777
    12-8=-123, ой, ошибся…
    .
    Output:

    123: 2
    2: 7
    777: 3
    -8: 1
    2: 7
    100500: 0
  4. EJudge: ThirdsOut 'Третий Лишний'

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

    Input:

    print(squeeze([1, 5, 4, 3, 7, 6, 14, 8, 2]))
    Output:

    [1, 4, 3, 7, 6, 8, 2]
  5. EJudge: BinSearch 'Двоичный поиск'

    Написать функцию, binsearch(x, A), реализующую двоичный поиск элемента x по индексируемой последовательности (списку, кортежу или даже range) A. Гарантировано, что последовательность упорядочена по возрастанию. Функция возвращает True, если $$ x \in A $$ и False в противном случае.

    Input:

    print(binsearch(123, sorted([123, 12, 45, 67, 23, 678, 12345, 4, 23, 768])))
    Output:

    True

Python/GeoPython2021/07_Lists (last edited 2021-10-28 09:38:26 by FrBrGeorge)